Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вставка в контейнер без конструктора копирования


Автор: Tiarwe 16.2.2013, 23:47
Подскажите, как можно засунуть объект в контейнер без использования конструктора копирования? И можно ли вообще?

Допустим есть код:
Код

Object a;
map<Object, int> object_list;


Мне нужно, чтобы объект a был в map. При этом конструктор копирования у объекта находится в приватной области, поэтому компилятор ругается. Может можно как-то в самом контейнере создать объект? Или без динамических объектов никак?

Автор: maxim1000 17.2.2013, 08:26
если у Object есть конструктор перемещения (который с &&), может получиться

что-нибудь вроде такого: object_list[std::move(a)]=1

тогда, конечно, сам a станет пригоден только для удаления

Автор: NoviceF 17.2.2013, 09:35
Цитата(Tiarwe @  17.2.2013,  00:47 Найти цитируемый пост)
конструктор копирования у объекта находится в приватной области


Так может быть автор этого типа намерено запретил копирование объектов? Может они для этого не предназначены? 

Автор: Amp 17.2.2013, 17:19
emplace

Автор: Tiarwe 17.2.2013, 19:07
Да, автор намерено запретил копирование. Просто мне надо было хранить в контейнере эти объекты. К динамике не хотел прибегать в целях упрощения (не следить за памятью)... Остановился на shared_ptr. Вопрос снят.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)