关于c ++:错误将Win代码移植到Linux

Errors porting Win code to Linux

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Where and why do I have to put the"template" and"typename" keywords?
declaring a C++ set iterator

我尝试编译C++代码,它在Linux系统中在Windows中运行良好。

我有很多错误,如以下错误:

1
2
3
4
code:
..
39          set<Node<T>*>::iterator child;
...

g++给了我错误:

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

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


你必须写

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

实际上,编译器并不知道iterator是模板类set中定义的type的名称。你必须明确地说出来。

Visual Studio允许此操作是隐式的。gcc没有。