-1

我有一个定义的类型并创建了一个这种类型的列表。

Message theMessage;
std::list<Message> LM;

现在这个说法

LM.push_back(theMessage);

给我这个错误:

/../gcc-4.1.2/lib/gcc/i686-pc-linux-gnu/4.1.0/../../../../include/c++/4.1.0/ext/new_allocator.h:104: error: no matching function for call to ‘
SharedTypes::Message::Message(const SharedTypes::Message&)’

构造函数看起来像

explicit Message(Message & aMsg)
{}

我该如何解决?

4

2 回答 2

2

我的错:

explicit Message(const Message & aMsg)
{}

explicit确实有效,但您必须通过const引用传递参数。

于 2012-09-21T13:32:27.710 回答
2

正如建议的构造函数应该是:

  1. explicit Message(const Message & aMsg)

  2. 声明为public

如果您无法更改此设置,请考虑使用智能指针容器,例如std::list<std::shared_ptr<Message>>,或boost::ptr_list<Message>

于 2012-09-21T13:39:44.907 回答