【发布时间】:2014-04-09 12:45:58
【问题描述】:
是否可以从std::shared_ptr 或std::tr1::shared_ptr 对象中提取原始指针?目的是告诉智能指针对象我不希望它再管理对象的生命周期。上下文是我有一个 API,它从用户那里获取原始指针并对对象进行一些处理。为了让 API 更易于管理,从这个原始指针中创建了一个 shared_ptr。现在,用户可能会要求返回对象。在这种情况下,当将处理后的对象返回给用户时,我想返回原始指针。但是,我还没有找到一种方法来做到这一点。无法使用.get(),因为智能指针必须无限期地保持活动状态。我会回馈unique_ptr,但这在tr1 中不可用。
基本上我想将原始指针移出 shared_ptr。
【问题讨论】:
-
你能用代码做一个例子吗?我不太明白你为什么要返回一个指向用户的指针。
-
指针是指向你可以控制的类,还是派生自你可以控制的类?
-
@Jefffrey ,不幸的是,代码示例太复杂了。刚意识到解释起来有多么困难,我开始认为我需要改变我的设计:)
-
@341008,是的,看起来你应该这样做。 :)
标签: c++ shared-ptr tr1