2012-04-23 39 views
3

我有一些第三方库生成并返回一个auto_ptr。不过,我真的想要使用一些STL容器。从auto_ptr转换为正常指针

所以我猜一个办法是

auto_ptr <int> ptr = some_library_call(); 

转换成普通的C++指针。以下的工作?

int* myptr = ptr; 

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

+0

第三方函数做什么,以及如何使用STL的返回值? – chris 2012-04-23 21:43:10

+0

基本上从文件中读取一些内容并对其进行反序列化。所以它实际上是some_library_call(字符串文件名),如果有帮助... – owagh 2012-04-23 21:45:22

+0

请注意,'std :: unique_ptr <>'有一个转换构造函数,它需要一个'std :: auto_ptr <>'。 – ildjarn 2012-04-23 22:07:13

回答

8

,如果你想获得的指针,依然让auto_ptr事后删除它,或者使用ptr.release()获取指针,使auto_ptr忘掉它,您可以使用ptr.get()(你必须然后删除它。)

3

请致电release() on the auto_ptr,然后您可以将该值存储在不同的智能指针或原始指针中,并将其用于STL容器。