c++ - 用另一个 unique_ptr 替换 vector 中的 unique_ptr 对象

标签 c++ c++11 smart-pointers unique-ptr

我想将该索引处的 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/

相关文章:

c++ - 在 C++ 中是否有任何方法导致整个堆栈帧展开? (除了使用异常(exception))

c++ - 自己的迭代器因 std::sort 而崩溃

C++ 模板允许丢弃 const 引用限定符

c++ - 删除引用计数大于零的拥有对象的引用计数智能指针?

c++ - 初始化智能指针

c++ - 为什么 VS2013 在销毁唯一指针时抛出异常?

c++ - 选择排序数组

c++ - 您可以使用运行时指定的变量调用编译时实例化模板函数吗?

c++ - 禁止虚拟模板功能的解决方法?

c++ - 为什么这个 C++ 静态单例永远不会停止?