首页 文章

是否有内置深度复制功能的作用域ptr?

提问于
浏览
0

据我所知,如果我有一个具有boost :: scoped_ptr成员变量的类,并且如果我要复制该类的实例并希望新实例让其scoped_ptr成员指向第一个的副本实例指出,我将不得不实现一个自定义复制构造函数(和赋值运算符),并明确深入复制scoped_ptr指向的内容 . 如果智能指针类型具有自己执行此操作的复制构造函数,那将会很棒 .

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

(如果有这样的指针,在我的情况下,指针必须更多地了解它应该如何创建新对象,因为我的对象指向的是具有虚拟Clone()函数的多态类 . 如果智能指针不能隐式弄清楚如何深度复制,客户端代码可能提供了一个函数指针或指向Clone函数的东西或者应该使用的工厂创建函数 . 我猜这个新对象如何创建的复杂性可能是一个为什么没有指针具有深拷贝功能的原因...?)

1 回答

  • 3

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

    但是,MNMLSTC core库提供了两个适合您的用例的智能指针(即core::poly_ptrcore::deep_ptr) . 特别是,由于存在虚拟成员函数,我相信core::poly_ptr是您所需要的 .

相关问题