c++ - 将派生类的 unique_ptr 添加到基类 unique_ptr 的 vector 中

标签 c++ inheritance vector move-semantics unique-ptr

<分区>

我有一个 std::unique_ptr<Derived>我想添加到 std::vector<std::unique_ptr<Base>> .

std::unique_ptr<Derived> derivedObject;
std::vector<std::unique_ptr<Base>> vec;

vec.push_back(derivedObject) // Invalid arguments

最佳答案

unique_ptr 保证它只是一个指向内存的指针,所以你不能只是将它复制到 vector 中,你需要 move 它:

vec.push_back(std::move(derivedObject));

如果您查看 unique_ptr 构造函数 (http://en.cppreference.com/w/cpp/memory/unique_ptr/unique_ptr),您会发现此类未实现复制构造函数,但实现了 move 构造函数 (http://en.cppreference.com/w/cpp/language/move_constructor)。

关于c++ - 将派生类的 unique_ptr 添加到基类 unique_ptr 的 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40510605/

相关文章:

派生类中构造函数和析构函数的 C++ LNK2019 错误

javascript - 在 JavaScript 中扩展已经定义的类

java - 将顶点着色器计算转换/移植到 Java

r - 如何仅删除 R 中向量中重复值的一个实例?

c++ - 在 C++ 中将函数指针转换为整数

Java反射: Initialize object using interface but using String value for class name

读取数据时c++ undefined variable

vector - 具有 32 位向量的 VHDL OR 逻辑

c++ - 如何在 g++ 中使用不同的 STL

具有相同名称的 C++ 内联函数和外部函数给出意外结果