#c #boost
#c #boost
Вопрос:
Освобождает ли ptr_vector право собственности на содержащиеся объекты, когда он передается в качестве аргумента функции?
class MyClass {
void MyClass::consume(ptr_vector<Object>amp; objects)
{
boost::swap(objects,objects_);
}
ptr_vector<Object> objects_;
};
void foo()
{
ptr_vector<Object> objects;
objects.push_back( new Object() );
MyClass myClass;
myClass.consume(objects);
}
Я хочу иметь возможность:
-
Сохраните список объектов, выделенных в куче, в виде списка.
-
Передайте список в MyClass. Затем MyClass становится владельцем этого списка, сохраняет его в элементе.
-
После возврата MyClass::consume вызывающий больше не имеет доступа к объектам.
Я не уверен, является ли ptr_vector подходящим контейнером.
Комментарии:
1. Я полагаю, у него есть
swap
метод? — Я не понимаю, как вы могли бы «использовать» неизменяемый вектор.2.
ptr_vector<Object> objects();
является объявлением функции. Пожалуйста, попробуйте скомпилировать код перед публикацией. Не заставляйте нас сначала исправлять ваш код, а затем отвечать на вопрос.3. @UncleBens ваше предложение сделало свое дело. Если вы хотите опубликовать ответ, я был бы рад его принять.
4. @Nawaz: я исправил все ошибки и обновил код, чтобы использовать предложение UncleBens.
5. @CandyChiu: Что находится
pointers
в функции? Вы его скомпилировали?