2009-05-21 34 views
0

我有一個類,我想使用標準庫列表來存儲它們的列表。我基本上想push_front()列表。所以,我的代碼是這樣的:不能push_front()標準庫列表與我的對象在C + +

#include <list> 
/* ... lots of stuff ...*/ 

complexNode myObject(); 

std::list<complexNode> complexList(); 

myList.push_front(myObject); 

但是編譯器會引發這個錯誤:

錯誤:對成員「complexList」 push_front「,要求其爲無級式「的std ::名單< complexNode,std :: allocator < complexNode >>()()'

類complexNode有一個複製構造函數。

我真的不明白這個問題,這個錯誤實際上意味着什麼...請幫助!

回答

6
std::list<complexNode> complexList(); 

不是這應該是:

std::list<complexNode> complexList; // without the() 
+2

是的,用空()它被解釋爲函數聲明(!),即使它在本地範圍內。 – bdonlan 2009-05-21 01:00:37

4

此:

std::list<complexNode> complexList(); 

擁有共同的名字 「C++'s most vexing parse」。簡而言之,您已使complexList成爲返回列表的函數的聲明,而不是本地變量。刪除(),那麼它不能被解析爲一個函數。