У меня есть что-то вроде этого
template <class T>
class Outer {
public: class Inner;
static Inner* x;
//...
class Inner {
//...
};
};
// Not working
template <class T>
Outer<T>::Inner* Outer<T>::x = NULL;
Ошибка, которую я получаю, говорит: :16: error: expected constructor, destructor, or type conversion before ‘*’ token
template<class T>
class Outer {
public:
class Inner;
static Inner* x;
//...
class Inner {
//...
};
};
template<class T>
typename Outer<T>::Inner *Outer<T>::x = NULL;
Что касается typename
а также class
, пожалуйста, обратитесь к Различия в ключевых словах «typename» и «class» в шаблонах C ++
Почему это, пожалуйста, обратитесь к Беда с зависимыми типами в шаблонах
Других решений пока нет …