从shared_ptr中提取原始指针

时间:2014-04-09 12:45:59

标签: c++ shared-ptr tr1

是否可以从std::shared_ptrstd::tr1::shared_ptr对象中提取原始指针?目的是告诉智能指针对象我不希望它再管理对象的生命周期。上下文是我有一个API,它接受来自用户的原始指针并对该对象进行一些处理。为了使事情更易于管理,API会在此原始指针中创建shared_ptr。现在,用户可能会要求返回该对象。在这种情况下,当将处理后的对象返回给用户时,我想要返回原始指针。但是,我还没有办法做到这一点。使用.get()是不可能的,因为智能指针必须无限期地保持活着。我会回复unique_ptr,但tr1中没有。

基本上我想将原始指针移出shared_ptr。

1 个答案:

答案 0 :(得分:1)

我认为您正在搜索release()的方法shared_ptr。对不起 - 没有这样的设计方法。

在这里,我找到了一种有趣的方式来做你想做的事 - https://stackoverflow.com/a/13701773/233885

您应该考虑在您的上下文(所有权)中再次使用shared_ptr