【发布时间】:2011-07-02 13:28:41
【问题描述】:
我有一个不能在堆上创建的类,它有私有析构函数。
但是有一个函数可以返回指向这种构造对象的指针。我想从中创建一个共享指针:
MyClass *GetMyClassPointer() {...}
boost::shared_ptr<MyClass> ptr;
ptr = boost::shared_ptr<MyClass>(GetMyClassPointer()); // [x]
错误:'MyClass::~MyClass()' 是 私人的
有什么办法吗?
【问题讨论】:
-
您应该提供更多关于类语义的信息。该类可能正在实现一个单例,在这种情况下,答案是您根本不应该使用
shared_ptr,或者该类可能正在实现一个工厂或内存池,您必须在其中将对象释放回相同的工厂...答案取决于您未在问题中显示的信息。
标签: c++ pointers boost shared-ptr