C++ boost ptr_vector:转移所有已分配对象的所有权
当ptr_向量作为参数传递给函数时,它是否会释放所包含对象的所有权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
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;
使用(对象);
}
我希望能够:
我不确定ptr_vector是否是合适的容器。我想它有
swap
方法?-不过,我不明白如何“消费”一个不可变的向量。ptr_vector objects()代码>是一个函数声明。请在发布前尝试编译代码。不要让我们先修改你的代码,然后再回答问题。@UncleBens你的建议起了作用。如果您想发布答案,我很乐意接受它。@Nawaz:我更正了所有错误,并更新了代码,以使用Unclebins的建议。@CandyChiu:函数中的pointers
是什么?你编译了吗?我想它有swap
方法不过,我不明白如何“消费”一个不可变的向量。ptr_vector objects()代码>是一个函数声明。请在发布前尝试编译代码。不要让我们先修改你的代码,然后再回答问题。@UncleBens你的建议起了作用。如果您想发布答案,我很乐意接受。@Nawaz:我更正了所有错误并更新了代码以使用UncleBens的建议。@CandyChiu:函数中的指针是什么?你编译了吗?