Вставка в контейнер без конструктора копирования

 
0
 
C++
ava
Tiarwe | 17.02.2013, 00:47
Подскажите, как можно засунуть объект в контейнер без использования конструктора копирования? И можно ли вообще?

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

Object a;
map<Object, int> object_list;


Мне нужно, чтобы объект a был в map. При этом конструктор копирования у объекта находится в приватной области, поэтому компилятор ругается. Может можно как-то в самом контейнере создать объект? Или без динамических объектов никак?
Ответы (4)
ava
maxim1000 | 17.02.2013, 08:26 #
если у Object есть конструктор перемещения (который с &&), может получиться

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

тогда, конечно, сам a станет пригоден только для удаления
ava
NoviceF | 17.02.2013, 09:35 #
Цитата (Tiarwe @  17.2.2013,  00:47 findReferencedText)
конструктор копирования у объекта находится в приватной области


Так может быть автор этого типа намерено запретил копирование объектов? Может они для этого не предназначены? 
ava
Amp | 17.02.2013, 17:19 #
emplace
ava
Tiarwe | 17.02.2013, 19:07 #
Да, автор намерено запретил копирование. Просто мне надо было хранить в контейнере эти объекты. К динамике не хотел прибегать в целях упрощения (не следить за памятью)... Остановился на shared_ptr. Вопрос снят.
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  maxim1000   Amp   Tiarwe   NoviceF
advanced
Отправить