2009-05-21 42 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成为返回列表的函数的声明,而不是本地变量。删除(),那么它不能被解析为一个函数。