从auto_ptr转换为普通指针

时间:2012-04-23 21:41:34

标签: c++ stl auto-ptr

我有一些第三方库生成并返回auto_ptr。但是,我真的想使用一些STL容器。

所以我猜一种方法是转换

auto_ptr <int> ptr = some_library_call ();

进入常规c ++指针。以下工作会吗?

int* myptr = ptr;

如果没有,使用STL和auto_ptr的最好方法是什么(是的,我知道它不能直接工作......我知道stl和auto_ptr不能混在一起)?

2 个答案:

答案 0 :(得分:8)

如果你想获得指针,你可以使用ptr.get(),然后让auto_ptr删除它,或者使用ptr.release()获取指针并使{{1}忘了它(之后你必须删除它。)

答案 1 :(得分:3)

调用release() on the auto_ptr,然后您可以将值存储在不同的智能指针或原始指针中,并将其与STL容器一起使用。