-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

提案されたように、コンストラクターは次のようにする必要があります。

  1. explicit Message(const Message & aMsg)

  2. として宣言されたpublic

これを変更できない場合はstd::list<std::shared_ptr<Message>>、 、またはboost::ptr_list<Message>

于 2012-09-21T13:39:44.907 に答える
2

私の悪い点:

explicit Message(const Message & aMsg)
{}

explicitconst動作しますが、パラメーターを参照渡しする必要があります。

于 2012-09-21T13:32:27.710 に答える