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

Replacing unique_ptr object in a vector with Another unique_ptr

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

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

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

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

std::unique_ptr 是一个只能移动的 class。因此,在实例具有名称(即 lvalue)的情况下,您必须将其包装在 std::move 中("convert" 到 rvalue) 将数据移出。

有关详细信息,请参阅 here