Возможный дубликат:
Где и почему я должен поставить ключевые слова «template» и «typename»?
объявление итератора множества C ++
Я пытаюсь скомпилировать C ++ некоторый код, который отлично работает в Windows, в системе Linux.
У меня есть много ошибок, таких как следующая:
code:
..
39 set<Node<T>*>::iterator child;
...
g++
дает мне ошибку:
Node.h:39: error: expected ‘;’ before ‘child’
Это всего лишь пример. Можете ли вы дать мне подсказку, как ее решить?
Вы должны написать
typename set<Node<T>*>::iterator child;
Действительно, компилятор не знает, что iterator
это имя type
определены в шаблонный учебный класс set
, Вы должны сказать это явно.
Visual Studio позволяет это подразумевать. gcc
не.
Других решений пока нет …