我正在试图找出初始化模板值为私有内部类的静态容器变量的正确方法。这是一个玩具示例
#include <vector>
using namespace std;
template <class myType>
class Foo {
private:
class Bar {
int x;
};
static vector<Bar*> bars;
};
template <class myType>
vector<Bar*> Foo<myType>::bars; // error C2065: 'Bar' : undeclared identifier
我也试过
...
template <class myType>
vector<Foo<myType>::Bar*> Foo<myType>::bars; // error C2059: syntax error : '>'
如果在class Bar
之外声明class Foo
,它会起作用,但从设计的角度来看,这是一个丑陋的解决方案。有什么建议吗?
仅供参考,一切都在.h文件中声明。
答案 0 :(得分:10)
试试这个:
template <class myType>
vector<typename Foo<myType>::Bar*> Foo<myType>::bars;
答案 1 :(得分:-1)
vector<Foo::Bar*> Foo<myType>::bars;
...请注意Foo::