【问题标题】:shared_ptr release [duplicate]shared_ptr 发布 [重复]
【发布时间】:2011-09-29 22:01:11
【问题描述】:

可能重复:
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 ,我不确定那个 deleter 参数有什么用。

有什么方法可以实现(如果没有其他方法,欢迎使用特定于 VS2010 的解决方案)。

【问题讨论】:

  • 为什么要颠覆shared_ptr
  • 删除器伴随着新值
  • 发布它的唯一方法可能是给别人一个shared_ptr,或者重新考虑你的整个设计

标签: c++ shared-ptr c++11


【解决方案1】:

在此获取作为 dup 关闭之前,我将对此添加我的看法。

我认为您有很多充分的理由偶尔想要发布 shared_ptr(或 boost::scoped_ptr)。但是,设计这些类的人认为您不应该这样做。 (这是他们的孩子,他们有权这样做。)

据我所知,根本不可能分离 shared_ptr。您将需要使用另一个类或提出一个不需要分离它的设计。

我应该 read the dupes 因为你可以实际上使用一个非常特殊的删除器来破解它。

【讨论】:

猜你喜欢
  • 2017-06-17
  • 1970-01-01
  • 2015-10-14
  • 2021-03-27
  • 1970-01-01
  • 2013-08-20
  • 2012-06-11
  • 1970-01-01
相关资源
最近更新 更多