<分区>
我有一个 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
<分区>
我有一个 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/