我有一个已定义的类型并创建了这种类型的列表。
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)
{}
我该如何解决?
答案 0 :(得分:2)
我的坏:
explicit Message(const Message & aMsg)
{}
explicit
确实有效,但您必须通过const
引用传递参数。
答案 1 :(得分:2)
正如建议的构造函数应该是:
explicit Message(const Message & aMsg)
声明为public
如果您无法更改此设置,请考虑使用智能指针容器,例如std::list<std::shared_ptr<Message>>
或boost::ptr_list<Message>