可能重复:
How to release pointer from boost::shared_ptr?
Detach a pointer from a shared_ptr?
我正在尝试发布shared_ptr(你可以释放unique_ptr的方式)。我知道当shared_ptr不是唯一的时候这没有意义,但我有一个保证是唯一的shared_ptr。我试过......
m_pObj.reset((T*)nullptr, [](T* const){});
...但它只是删除了对象。我不确定如果shared_ptr最终调用delete,那删除器参数会有什么用。
有没有办法实现这一目标(如果没有其他方法,欢迎特定于VS2010的解决方案。)
答案 0 :(得分:2)
在此关闭作为dup之前,我将加上我对此的看法。
我认为有很多很好的理由说明为什么偶尔想要发布shared_ptr(或boost :: scoped_ptr)。但是,设计这些课程的人认为你不应该这样做。 (这是他们的孩子,他们有权利。)
据我所见,根本无法分离shared_ptr。您将需要使用另一个类或设计一个您不需要分离它的设计。
我应该read the dupes,因为你可以使用一个非常特殊的删除器来实际攻击它。