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

Replacing unique_ptr object in a vector with Another unique_ptr

本文关键字:ptr unique 替换 另一个 对象 向量      更新时间:2023-10-16

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

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

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

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

std::unique_ptr是一个只移动的类。因此,在实例具有名称(即左值)的情况下,必须将其封装在std::move中("转换"为右值>)才能移出数据。

请参阅此处了解更多详细信息。