如何初始化静态模板化容器?

时间:2010-10-05 18:43:22

标签: c++ templates class static nested

我正在试图找出初始化模板值为私有内部类的静态容器变量的正确方法。这是一个玩具示例

#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文件中声明。

2 个答案:

答案 0 :(得分:10)

试试这个:

template <class myType>
vector<typename Foo<myType>::Bar*> Foo<myType>::bars;

答案 1 :(得分:-1)

vector<Foo::Bar*> Foo<myType>::bars; ...请注意Foo::