나는 다음과 같은 코드가 있습니다템플릿 클래스의 정적 멤버 변수를 클래스의 정적 멤버 변수로 선언/정의/초기화 할 수 있습니까?
이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"
을 내가 정의/선언 할 수 있습니까 (.. 내가뿐만 아니라 GCC의 문제를 재현 할 수 엑스 코드에서 LLVM 컴파일러를 사용하고 있습니다)/정적 멤버를 초기화를 클래스의 정적 멤버 변수로 템플릿 클래스의 변수?
또한 나머지 부분, 템플릿 및 소스 파일에서 'B'의 (템플릿이 아닌) 멤버와 함께 템플릿에 'A :: a' 템플릿을 정의해야합니다. –
'A'는 A 및 A 각각에 대한 정적 멤버 변수가 아닌 A? (A라는 클래스가 없습니다. A 과 A ) –
syko
@syko 예, A에는 정적 멤버 a가 있고 A 에는 자체 정적 인 a가 있습니다. 위의 정의는 이러한 경우에 사용됩니다. 따라서'A '을 사용하면'A :: a'가 정의되고,'A '을 사용하면'A :: a'가 정의됩니다 ... –
songyuanyao