c++ defining a static member of a template class with type inner class pointer
我有一个模板类,像这里(在头中)有一个内部类和一个指向内部类的指针类型的静态成员
1 2 3 4 5 6 7 8 9 | template <class t> class outer { class inner { int a; }; static inner *m; }; template <class t> outer <t>::inner *outer <t>::m; |
当我要定义静态成员时,我在最后一行的"*"标记之前说"错误:预期的构造函数、析构函数或类型转换"(mingw32-g++3.4.5)
您需要限定EDCOX1×0类是一个类型名,因为它依赖于模板参数,C++编译器假定在该上下文中EDCOX1 OR 0的名称不是一个类型:
1 | template <class t> typename outer<t>::inner* outer<t>::m; |
理由:上述行中的名称
1 2 3 4 | template <> class outer<int> { int inner; }; |
现在,
因此,在一般情况下,EDCOX1〔10〕的含义是模棱两可的,而C++则解决了这种模糊性,假设EDCOX1〔0〕不命名类型。除非你说是这样,在它前面加上