【发布时间】:2014-03-16 14:33:35
【问题描述】:
我有一个包含 unique_ptr 向量的类。该类还具有向向量添加元素的方法。
class PointerVector
{
public:
void addPointer(std::unique_ptr<int> p);
private:
std::vector<std::unique_ptr<int>> mPointers;
};
addPointer 方法定义:
void PointerVector::addPointer(std::unique_ptr<int> p)
{
mPointers.emplace_back(std::move(p));
}
所以我使用std::move 来转移指针的所有权。
当我调用addPointer时,我也使用std::move:
PointerVector pv;
std::unique_ptr<int> i(new i(1));
pv.addPointer(std::move(i));
这是正确的做事方式吗?一直打电话给std::move 感觉很麻烦。
编辑:我实际上想将一个 unique_ptr 向量保存到一个类中,但我想先尝试一个 int,以使事情变得更容易。
【问题讨论】:
-
为什么要将unique_ptr的向量保存为int?为什么不
std::vector<int> data;?? -
我实际上想将一个 unique_ptr 向量保存到一个类中,但我想先尝试一个 int ,以使事情变得更容易。
-
std::unique_ptr是接口的重要部分还是实现细节? -
这是一个实现细节。这就是为什么我不喜欢在
PointerVector之外使用它。
标签: c++ c++11 vector unique-ptr