用另一个unique_ptr替换向量中的unique_ptr对象

时间:2015-12-08 22:20:27

标签: c++ c++11 smart-pointers unique-ptr

我想用另一个替换该索引处的unique_ptr对象,这实际上是"删除"当前在向量中的指针,并将classObj移动到该位置。

std::unique_ptr<ClassName> classObj(new className());
classNameStorage[5] = classObj; // classNameStorage.size() > 5

上面的代码,使用赋值运算符无效。

1 个答案:

答案 0 :(得分:4)

classNameStorage[5] = std::move(classObj);

std::unique_ptr是一个仅限移动的课程。因此,在实例具有名称(即左值)的情况下,您必须将其包装在std::move中(&#34;将&#34;转换为 rvalue < / em>)将数据移出。

有关详细信息,请参阅here