是否有内置深层复制功能的作用域指针?

Is there a scoped ptr that has deep copy functionality built in?

据我了解,如果我有一个 class 有一个 boost::scoped_ptr 成员变量,并且如果我要复制那个 class 的一个实例并且想要新的实例让它的 scoped_ptr 成员指向第一个实例所指向的副本,我将不得不实现自定义复制构造函数(和赋值运算符)并显式地对 scoped_ptr 的任何内容进行深度复制指着。如果智能指针类型有一个自己执行此操作的复制构造函数,那就太好了。

C++ boost / stl库中是否没有类似的智能指针已经内置了深度复制功能,因此当智能指针被复制时,它指向的对象也被复制?至少作为一种选择?

(如果有这样一个指针,在我的例子中,指针必须更多地了解它应该如何创建新对象,因为我指向的对象是多态的 classes,具有虚拟Clone() 函数。如果智能指针不能隐含地弄清楚如何进行深度复制,则客户端代码可能已经提供了一个函数指针或指向 Clone 函数的东西,或者应该使用的任何工厂创建函数。我猜这个复杂的新对象是如何创建的,这可能是没有指针具有深层复制功能的原因之一..?)

据我所知,标准库中没有智能指针实现你想要的语义。

然而,MNMLSTC core library provides – among other things – two smart pointers (namely, core::poly_ptr and core::deep_ptr) that should fit your use case. In particular, because of the presence of virtual member functions, I believe core::poly_ptr 正是您所需要的。