Search code examples
c++stlauto-ptr

Convert from auto_ptr to normal pointer


I have some third party libraries that generate and return an auto_ptr. However, I really want to use some STL containers.

So I'm guessing one way would be to convert

auto_ptr <int> ptr = some_library_call ();

into a regular c++ pointer. Will the following work?

int* myptr = ptr;

If not, what is the best way to use STL with auto_ptr (yes I know it won't work directly... I'm aware that stl and auto_ptr don't mix together)?


Solution

  • You can use either ptr.get() if you want to obtain the pointer and still let the auto_ptr to delete it afterwards, or use ptr.release() to obtain the pointer and make the auto_ptr forget about it (you have to delete it afterwards.)