Если мой класс SomeType есть метод, который возвращает элемент из карты (с помощью ключа) говоритВозвращение unique_ptr из метода класса C++ 0x
std::unique_ptr<OtherType> get_othertype(std::string name)
{
return otMap.find(name);
}
, что бы идти на пользу абонент будет Получать указатель на карту, а не на копию? Можно ли это сделать или попытаться вызвать конструктор копирования (и не удалиться, поскольку он был удален), потому что он возвращается?
Предполагая, что я должен использовать unique_ptr в качестве элементов моей карты.
UPDATE ::
После попытки реализовать код, кажется, что unique_ptr и станд: отображение /: пара не работают вместе в GCC 4.4.4, пара как раз не нравится unique_ptr в качестве параметра типа. (см. Can't create map of MoveConstructibles).
Я сменил ptr на std :: shared_ptr, и все это сработало.
Я полагаю, что могу использовать тот же код с общим указателем?
Кстати, что такое 'OtherType'? Является ли он базовым классом с виртуальными функциями-членами? Вам нужен полиморфизм подтипа? – fredoverflow
Это будет базовый класс с чистым виртуальным методом, как интерфейс. Мне просто нужно было бы назвать один из чистых виртуальных методов, не нужно бросать. Это что-то меняет? – Mark
Интерфейсы являются ярким примером использования 'unique_ptr'. Больше никаких вопросов. – fredoverflow