我想储存一些std::unique_ptr<my_type>
into a std::vector
. Since 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.
复制器的目的是进行深度复制。您不需要 C++ 中的克隆方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)