クラス内で(アドレスを使用しない組み込み型以外の)静的なメンバ変数を定義した場合、クラス外でも宣言をしないと使用できません。(リンク時にエラーとなります。) (参考サイト: 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 件のコメント:
コメントを投稿