2012-04-23 20 views
3

auto_ptrを生成して返すサードパーティのライブラリがあります。しかし、私は本当にいくつかのSTLコンテナを使いたいと思っています。 auto_ptrから通常のポインタに変換する

だから私は1つの方法は、++ポインタ、通常のCに

auto_ptr <int> ptr = some_library_call(); 

を変換することです推測しています。次の作業はできますか?

int* myptr = ptr; 

ない場合は、(はい、私はそれが直接動作しません知っている...私はSTLとauto_ptrを一緒に混在させないことを承知している)のauto_ptrをSTLを使用するための最良の方法は何ですか?

+0

サードパーティの関数は何を行い、STLで戻り値をどのように使用していますか? – chris

+0

基本的にファイルからいくつかのものを読み取り、それを逆シリアル化します。これは実際にはsome_library_call(文字列ファイル名)です。 – owagh

+0

'std :: unique_ptr <>'は 'std :: auto_ptr <>'をとる変換コンストラクタを持っていることに注意してください。 – ildjarn

答えて

8

(あなたが後でそれを削除する必要があります。)

3

release() on the auto_ptrを呼び出すと、値を別のスマートポインタまたは生ポインタに格納し、STLコンテナで使用することができます。

あなたはポインタを取得したいとまだ auto_ptrは後でそれを削除、またはポインタを取得し、 auto_ptrはそれについて忘れさせるために ptr.release()を使用することを許可すればあなたは ptr.get()のいずれかを使用することができます
関連する問題