无法将 Unique_Ptr 推回向量
提供的代码尝试将 std::unique_ptr 推回向量,这会导致由于无法对唯一指针执行复制操作而导致编译错误。
回想一下std::unique_ptr 确保所包含的指向特定对象的指针的独占所有权。这意味着当分配唯一指针时,所有权被移动而不是复制。因此,禁止复制唯一指针,因为多个所有者将违反其唯一所有权保证。
要解决此问题并将唯一指针正确推入向量,请使用 std::move 函数,如下所示:
vec.push_back(std::move(ptr2x));
std::move 将唯一指针的所有权转移给向量,使其能够在不违反唯一所有权的情况下插入到向量中
需要注意的是,这段代码中 std::unique_ptr 的初始用法是不正确的。它尝试管理指向局部变量的指针,这与对对象生命周期所需的控制相矛盾。为了防止这种差异,请使用动态分配对象,例如:
std::unique_ptr<int> ptr(new int(1));
以上是如何正确地将 `std::unique_ptr` 推入 `std::vector` 中?的详细内容。更多信息请关注PHP中文网其他相关文章!