2012-12-04 71 views
0

Possible Duplicate:
Where and why do I have to put the “template” and “typename” keywords?
declaring a C++ set iterator错误移植赢代码到Linux

我试图编译C++一些代码,这在Windows工作正常,在Linux系统。

我有很多错误,如下列之一:

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

g++给我的错误:

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

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

+2

它可能是一个编码或Windows linebreaks问题 – Chakalaka

回答

7

你必须写

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

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

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

+0

好吧,它似乎工作! – Aslan986