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

wpa*_*akt 1 c++ smart-pointers unique-ptr c++11

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

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

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

Bri*_*uez 5

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

std::unique_ptr是一个只能移动的类。因此,在实例具有名称(即是左)的情况下,您必须将其包装std::move(“转换”为右)以将数据移出。

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