我有一些第三方库生成并返回一个auto_ptr。不过,我真的想要使用一些STL容器。从auto_ptr转换为正常指针
所以我猜一个办法是
auto_ptr <int> ptr = some_library_call();
转换成普通的C++指针。以下的工作?
int* myptr = ptr;
如果没有,什么是使用STL的auto_ptr用(是的,我知道这不会直接合作......我知道,STL和auto_ptr的不混合在一起)的最好方法?
我有一些第三方库生成并返回一个auto_ptr。不过,我真的想要使用一些STL容器。从auto_ptr转换为正常指针
所以我猜一个办法是
auto_ptr <int> ptr = some_library_call();
转换成普通的C++指针。以下的工作?
int* myptr = ptr;
如果没有,什么是使用STL的auto_ptr用(是的,我知道这不会直接合作......我知道,STL和auto_ptr的不混合在一起)的最好方法?
,如果你想获得的指针,依然让auto_ptr
事后删除它,或者使用ptr.release()
获取指针,使auto_ptr
忘掉它,您可以使用ptr.get()
(你必须然后删除它。)
请致电release() on the auto_ptr,然后您可以将该值存储在不同的智能指针或原始指针中,并将其用于STL容器。
第三方函数做什么,以及如何使用STL的返回值? – chris 2012-04-23 21:43:10
基本上从文件中读取一些内容并对其进行反序列化。所以它实际上是some_library_call(字符串文件名),如果有帮助... – owagh 2012-04-23 21:45:22
请注意,'std :: unique_ptr <>'有一个转换构造函数,它需要一个'std :: auto_ptr <>'。 – ildjarn 2012-04-23 22:07:13