来自指针的shared_ptr

Max*_*rai 3 c++ boost pointers shared-ptr

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

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

MyClass *GetMyClassPointer() {...}

boost::shared_ptr<MyClass> ptr;
ptr = boost::shared_ptr<MyClass>(GetMyClassPointer()); // [x]
Run Code Online (Sandbox Code Playgroud)

错误:'MyClass :: ~MyClass()'是私有的

无论如何?

Ben*_*igt 9

是.

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

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