2012-12-04 91 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