Extracting a raw pointer from a shared_ptr

喜你入骨 提交于 2019-11-28 12:31:44

问题


Is it possible to extract a raw pointer from a std::shared_ptr or std::tr1::shared_ptr object? The intent is to tell the smart pointer object that I don't want it to manage the lifetime of the object anymore. The context is that I have an API that takes a raw pointer from users and does some processing on the object. To make things easier to manage API creates a shared_ptr out of this raw pointer. Now, the user might ask for the object to be returned. In that case, when giving the processed object back to the user I want to give back the raw pointer. However, I have not found a way to do that. Using .get() is not possible as then the smart pointer will have to be kept alive indefinitely. I would have given back a unique_ptr but that is not available in tr1.

Basically I want to move the raw pointer out of the shared_ptr.


回答1:


I think you are searching for the method release() of shared_ptr. Sorry - there is no such method by design.

Here I found a funny way to do what you want - https://stackoverflow.com/a/13701773/233885.

You should think about using shared_ptr again in you context (ownership).



来源:https://stackoverflow.com/questions/22962991/extracting-a-raw-pointer-from-a-shared-ptr

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!