Я пытаюсь найти правильный способ инициализации статической переменной контейнера, значением шаблона которой является закрытый внутренний класс.Вот игрушечный пример
#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.