2012-04-23 66 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容器。