2009-05-26 3 views

答えて

8

Boostで本当にうまく動作します - あなたはまた、使用している場合weak_ptrは、使用することを安全に気の利いた機能を持っていますshared_ptr。寿命がshared_ptrで管理されているインスタンスへの参照をweak_ptrのままにします。基礎となるインスタンスを使用する必要がある場合は、shared_ptrコンストラクタまたはlockメソッドのコンストラクタを使用して、インスタンスをshared_ptrインスタンスに変換します。基礎となるインスタンスが削除された場合、操作は失敗します。使用は、shared_ptrクラスと同じ方法でスレッドセーフです。

shared_ptr<int> p(new int(5)); 
weak_ptr<int> q(p); 

// some time later 

if(shared_ptr<int> r = q.lock()) 
{ 
    // use *r 
} 
+0

ありがとう。私はweak_ptrがこの動作をしていたことに気づいていませんでした。私はどのくらい私が不必要な参照カウントの動作のために払っているのだろうか。とにかく、あなたの答えは第一だったと思います。最高にマーキングする。 –

6

「ブースト:: weak_ptrを」を「ブースト:: shared_ptrのを」(TR1でも利用可能)

関連する問題