Короче говоря, вы не можете с C ++ 98 / C ++ 03.Объекты в objVector размещаются и принадлежат objVector, и когда вы уничтожаете или очищаете его, элементы также будут уничтожены.
С C ++ 11 вы можете реализовать конструктор перемещения для вашего объекта и заполнить ptrVectorновые объекты, которые были сконструированы с перемещением из объектов в objVector.В общем случае конструкторы перемещения перемещают закрытые члены объекта, избегая копирования любой большой структуры данных, выделенной в куче, которая принадлежит объекту, что обычно очень дешево.
Чтобы сделать это, вы 'Использовать что-то вроде std::transform(begin(objVector), end(objVector), std::back_inserter(ptrVector), [](object& o){return new object(std::move(o);})
Однако я бы рекомендовал сделать ptrVector std::vector<std::unique_ptr<object>>
или std::vector<std::shared_ptr<object>>
вместо использования необработанного указателя, если ptrVector
обладает исключительным или общим владением объектами, на которые указываетэто соответственно.