2
template<typename TypeA, typename TypeB>
class MyClass
{
public:
static TypeA StaticA;
static TypeB StaticB;
//...other stuff....
};
如何初始化 'StaticA'(和StaticB)?
如果我这样做:(在头文件,在类的声明下,而不是在它里面)
template<>
typename MyClass<TypeA, TypeB>::TypeA MyClass<TypeA, TypeB>::StaticA = TypeA();
给我:
'TypeA' was not declared in this scope.
'TypeB' was not declared in this scope.
template argument 1 is invalid
template argument 2 is invalid
而且这样的:
template<typename TypeA, typename TypeB>
typename MyClass<TypeA, TypeB>::TypeA MyClass<TypeA, TypeB>::StaticA = TypeA();
给我:
conflicting declaration 'typename MyClass<TypeA, TypeB>::TypeA MyClass<TypeA, TypeB>::StaticA'
'MyClass<TypeA, TypeB>::StaticA' has a previous declaration as 'TypeA MyClass<TypeA, TypeB>::StaticA'
declaration of 'TypeA MyClass<TypeA, TypeB>::StaticA' outside of class is not definition [-fpermissive]
初始化使用模板参数作为类型的模板类的静态成员的正确方法是什么?