使用 std::list 回推数据

pushing back a data using std::list

本文关键字:数据 list std 使用      更新时间:2023-10-16

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

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

我该如何解决这个问题?

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

  1. explicit Message(const Message & aMsg)

  2. 声明为public

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

我的坏:

explicit Message(const Message & aMsg)
{}

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