将Win代码移植到Linux的错误

时间:2012-12-04 11:19:49

标签: c++ linux porting

  

可能重复:
  Where and why do I have to put the “template” and “typename” keywords?
  declaring a C++ set iterator

我正在尝试编译C ++的一些代码,这在Windows系统中可以正常运行。

我遇到了很多错误,如下所示:

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

g++给了我错误:

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

这只是一个例子。你能给我一些如何解决它的暗示吗?

1 个答案:

答案 0 :(得分:7)

你必须写

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

实际上,编译器不知道iterator模板化type中定义的set的名称。你必须明确地告诉它。

Visual Studio允许这是隐式的。 gcc没有。