来自指针的shared_ptr

时间:2011-07-02 13:28:42

标签: c++ pointers boost shared-ptr

我有一个无法在堆上创建的类,它有私有析构函数。

但是有一个函数可以返回指向这种构造对象的指针。我想从它做一个共享指针:

MyClass *GetMyClassPointer() {...}

boost::shared_ptr<MyClass> ptr;
ptr = boost::shared_ptr<MyClass>(GetMyClassPointer()); // [x]
  

错误:'MyClass :: ~MyClass()'是   私人

任何方式?

1 个答案:

答案 0 :(得分:9)

听起来这个实例是由一个可以访问私有构造函数(成员或朋友)的函数动态分配的。然后应该有一个公共函数来清理实例,它可以访问私有析构函数(即使你没有)。

使用接受自定义删除器的shared_ptr构造函数,并将其连接到类提供的清理函数(可能需要一个包装函数来使签名匹配)。