2013年10月14日月曜日

テンプレートクラスの静的メンバ変数の使用法

クラス内で(アドレスを使用しない組み込み型以外の)静的なメンバ変数を定義した場合、クラス外でも宣言をしないと使用できません。(リンク時にエラーとなります。) (参考サイト: http://www7b.biglobe.ne.jp/~robe/cpphtml/html02/cpp02028.html

テンプレートクラスでも同様で、以下のように書けば問題ありません。

template<int N1, int N2>
class MyClass {
private:
    static int* p;
};
template<int N1, int N2>
int* MyClass<N1, N2>::p;

なお、コンパイル確認はMicrosoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)で行いました。

0 件のコメント:

コメントを投稿