C++ boost ptr_vector:转移所有已分配对象的所有权

C++ boost ptr_vector:转移所有已分配对象的所有权,c++,boost,C++,Boost,当ptr_向量作为参数传递给函数时,它是否会释放所包含对象的所有权 class MyClass { void MyClass::consume(ptr_vector<Object>& objects) { boost::swap(objects,objects_); } ptr_vector<Object> objects_; }; void foo() { ptr_vector<Object

当ptr_向量作为参数传递给函数时,它是否会释放所包含对象的所有权

class MyClass {
    void MyClass::consume(ptr_vector<Object>& 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);
 }
class-MyClass{
void MyClass::consume(ptr_向量和对象)
{        
交换(对象,对象);
}
向量对象;
};
void foo()
{
向量对象;
对象。向后推(新对象());
MyClass MyClass;
使用(对象);
}
我希望能够:

  • 在列表上存储堆分配对象的列表

  • 将列表传递给MyClass。MyClass然后获得该列表的所有权,并将其存储在成员中

  • 在MyClass::consume返回后,调用方不再有权访问对象


  • 我不确定ptr_vector是否是合适的容器。

    我想它有
    swap
    方法?-不过,我不明白如何“消费”一个不可变的向量。
    ptr_vector objects()是一个函数声明。请在发布前尝试编译代码。不要让我们先修改你的代码,然后再回答问题。@UncleBens你的建议起了作用。如果您想发布答案,我很乐意接受它。@Nawaz:我更正了所有错误,并更新了代码,以使用Unclebins的建议。@CandyChiu:函数中的
    pointers
    是什么?你编译了吗?我想它有
    swap
    方法不过,我不明白如何“消费”一个不可变的向量。
    ptr_vector objects()是一个函数声明。请在发布前尝试编译代码。不要让我们先修改你的代码,然后再回答问题。@UncleBens你的建议起了作用。如果您想发布答案,我很乐意接受。@Nawaz:我更正了所有错误并更新了代码以使用UncleBens的建议。@CandyChiu:函数中的
    指针是什么?你编译了吗?