我想用另一个替换该索引处的unique_ptr对象,这实际上是"删除"当前在向量中的指针,并将classObj移动到该位置。
std::unique_ptr<ClassName> classObj(new className());
classNameStorage[5] = classObj; // classNameStorage.size() > 5
上面的代码,使用赋值运算符无效。
答案 0 :(得分:4)
classNameStorage[5] = std::move(classObj);
std::unique_ptr
是一个仅限移动的课程。因此,在实例具有名称(即左值)的情况下,您必须将其包装在std::move
中(&#34;将&#34;转换为 rvalue < / em>)将数据移出。
有关详细信息,请参阅here。