是否可以从std::shared_ptr
或std::tr1::shared_ptr
对象中提取原始指针?目的是告诉智能指针对象我不希望它再管理对象的生命周期。上下文是我有一个API,它接受来自用户的原始指针并对该对象进行一些处理。为了使事情更易于管理,API会在此原始指针中创建shared_ptr
。现在,用户可能会要求返回该对象。在这种情况下,当将处理后的对象返回给用户时,我想要返回原始指针。但是,我还没有办法做到这一点。使用.get()
是不可能的,因为智能指针必须无限期地保持活着。我会回复unique_ptr
,但tr1
中没有。
基本上我想将原始指针移出shared_ptr。
答案 0 :(得分:1)
我认为您正在搜索release()
的方法shared_ptr
。对不起 - 没有这样的设计方法。
在这里,我找到了一种有趣的方式来做你想做的事 - https://stackoverflow.com/a/13701773/233885。
您应该考虑在您的上下文(所有权)中再次使用shared_ptr
。