我想将该索引处的 unique_ptr 对象替换为另一个对象,这实际上是“删除” vector 中当前的指针,并将 classObj 移动到该位置。
std::unique_ptr<ClassName> classObj(new className());
classNameStorage[5] = classObj; // classNameStorage.size() > 5
上面的代码,使用赋值运算符是无效的。
最佳答案
classNameStorage[5] = std::move(classObj);
std::unique_ptr
是一个只能移动的类。因此,在实例具有名称(即 左值)的情况下,您必须将其包装在 std::move
中(“转换”为 右值) 将数据移出。
参见 here了解更多详情。
关于c++ - 用另一个 unique_ptr 替换 vector 中的 unique_ptr 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34167168/