Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 初始化模板类';使用模板参数作为类型的静态成员?_C++_Templates_Static_Initialization - Fatal编程技术网

C++ 初始化模板类';使用模板参数作为类型的静态成员?

C++ 初始化模板类';使用模板参数作为类型的静态成员?,c++,templates,static,initialization,C++,Templates,Static,Initialization,我有: 这是: 'TypeA' was not declared in this scope. 'TypeB' was not declared in this scope. template argument 1 is invalid template argument 2 is invalid 模板 typename MyClass::TypeA MyClass::StaticA=TypeA(); 给我: template<> typename MyClass<Type

我有:

这是:

'TypeA' was not declared in this scope.
'TypeB' was not declared in this scope.
template argument 1 is invalid
template argument 2 is invalid
模板
typename MyClass::TypeA MyClass::StaticA=TypeA();
给我:

template<>
typename MyClass<TypeA, TypeB>::TypeA MyClass<TypeA, TypeB>::StaticA = TypeA();
template<typename TypeA, typename TypeB>
typename MyClass<TypeA, TypeB>::TypeA MyClass<TypeA, TypeB>::StaticA = TypeA();
冲突声明“typename MyClass::TypeA MyClass::StaticA”
“MyClass::StaticA”以前的声明为“TypeA MyClass::StaticA”
类外的“TypeA MyClass::StaticA”声明不是定义[-fpPermissive]

初始化使用模板参数作为类型的模板化类的静态成员的正确方法是什么?

啊,正确的语法是:

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]
模板
TypeA ResourceFactory::StaticA=TypeA();
我最初的问题是:

template<typename TypeA, typename TypeB>
TypeA ResourceFactory<TypeA, TypeB>::StaticA = TypeA();
模板
typename MyClass::TypeA MyClass::StaticA=TypeA();
^删除^^----删除--------^
我被所有的模板参数弄糊涂了

与这个问题相似,但不完全重叠

template<typename TypeA, typename TypeB>
TypeA ResourceFactory<TypeA, TypeB>::StaticA = TypeA();
template<typename TypeA, typename TypeB>
typename MyClass<TypeA, TypeB>:: TypeA MyClass<TypeA, TypeB>::StaticA = TypeA();
^remove^ ^-------remove--------^