Próbuję znaleźć prawidłowy sposób inicjowania statycznej zmiennej kontenera, której wartością jest prywatna klasa wewnętrzna. Oto przykład zabawkaJak zainicjalizować statyczny kontener szablonowy?
#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
Próbowałem zostały również
...
template <class myType>
vector<Foo<myType>::Bar*> Foo<myType>::bars; // error C2059: syntax error : '>'
Działa jeśli class Bar
jest zadeklarowana poza class Foo
ale z punktu widzenia konstrukcji jest to brzydki rozwiązanie. Jakieś sugestie?
FYI, wszystko jest zadeklarowane w pliku .h.
beat mnie 4secs! ': + 1' ode mnie. – sbi
Zawsze byłem pokonany przez dużą marżę. :( – Donotalo
Yup, pokonaj mnie też. Zasada jest taka, użyj słowa kluczowego 'typename' przed A :: B, gdy ma to być typ i wyrażenie A wymaga parametru szablonu – aschepler