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()'是私有的
无论如何?
是.
听起来这个实例是由一个可以访问私有构造函数(成员或朋友)的函数动态分配的.然后应该有一个公共函数来清理实例,当你完成它时,它可以访问私有析构函数(即使你没有).
使用shared_ptr接受自定义删除器的构造函数,并将其连接到类提供的清理函数(可能需要包装函数来使签名匹配).