私は、次のコードを持っている:(。。私は、同様のgccで問題を再現することができますXcodeでLLVMコンパイラを使用しています)テンプレートクラスの静的メンバー変数をクラスの静的メンバー変数として宣言/定義/初期化するにはどうすればよいですか?
template <typename T>
class A {
public:
static int a;
};
class B {
public:
static A<int> a1;
static A<double> a2;
};
int B::a1::a = 0; --> It gives an error "a1 is not a class, namespace, enumeration"
どうやって定義する/静的メンバを初期化/宣言することができますクラスの静的メンバー変数としてのテンプレートクラスの変数?
さらに、残りのテンプレート、およびソースファイル内の 'B'の(テンプレート以外の)メンバとともに、テンプレートメンバ' A :: a'をヘッダに定義する必要があります。 –
'A'はAとA のそれぞれの静的メンバー変数ではなく、A? 'A とA だけだと思いますか?) –
syko
@sykoはい、 'A'には静的メンバー 'a'があり、' A 'には独自の静的 'a'があります。これらの場合、上記の定義が使用されます。したがって、 'A 'を使うと 'A :: a'が定義され、' A '、' A :: a'が定義されます... –
songyuanyao