将矢量中的 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。
我想将该索引处的 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。