Domanda

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)?

È stato utile?

Soluzione

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.)

Altri suggerimenti

Call release() on the auto_ptr, then you can store the value in a different smart pointer or raw pointer and use it with STL containers.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top