откат данных с использованием std :: list

У меня есть определенный тип и создал список этого типа.

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

Решение

Как было предложено, конструктор должен быть:

  1. explicit Message(const Message & aMsg)

  2. объявлен как public

Если вы не можете изменить это, подумайте об использовании контейнера умного указателя, например std::list<std::shared_ptr<Message>>, или же boost::ptr_list<Message>

2

Другие решения

Виноват:

explicit Message(const Message & aMsg)
{}

explicit работает, но вы должны передать параметр по const ссылка.

2

По вопросам рекламы [email protected]