سؤال

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

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top