使用std :: list推回数据

时间:2012-09-21 13:31:04

标签: c++ list std

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

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)
{}

我该如何解决?

2 个答案:

答案 0 :(得分:2)

我的坏:

explicit Message(const Message & aMsg)
{}

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

答案 1 :(得分:2)

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

  1. explicit Message(const Message & aMsg)

  2. 声明为public

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