我想存储一些 std::unique_ptr<my_type>
进入 std::vector
.自 my_type
提供一个 clone()
制作 my_type *
的深拷贝非常简单.重点是如何扩展std::unique_ptr
在添加复制构造函数和赋值运算符的同时保留其所有功能。遗产?模板特化?你能提供一个代码片段吗?
最佳答案
std::unique_ptr
的目的是使其唯一,即它不应该是可复制的。这就是为什么他们将其设为只能移动的原因。它用于表示唯一所有权。
如果你想做一个深拷贝然后让你的拷贝构造函数完成它的工作,这就是它的用途。
std::unique_ptr<my_type> ptr1{new my_type{}}; // Lets say you have this.
std::unique_ptr<my_type> ptr2{new my_type{*ptr1}}; // Make deep copy using copy ctor.
copy ctor 的目的是进行深拷贝。您不需要 C++ 中的克隆方法。
关于c++ - 将深拷贝构造函数添加到 std::unique_ptr<my_type>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535719/