Ошибки при портировании Win кода на Linux

Возможный дубликат:
Где и почему я должен поставить ключевые слова «template» и «typename»?
объявление итератора множества C ++

Я пытаюсь скомпилировать C ++ некоторый код, который отлично работает в Windows, в системе Linux.

У меня есть много ошибок, таких как следующая:

code:
..
39          set<Node<T>*>::iterator child;
...

g++ дает мне ошибку:

Node.h:39: error: expected ‘;’ before ‘child’

Это всего лишь пример. Можете ли вы дать мне подсказку, как ее решить?

0

Решение

Вы должны написать

typename set<Node<T>*>::iterator child;

Действительно, компилятор не знает, что iterator это имя type определены в шаблонный учебный класс set, Вы должны сказать это явно.

Visual Studio позволяет это подразумевать. gcc не.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]