Boostを語れゴラァ part3 at TECH
[2ch|▼Menu]
599:デフォルトの名無しさん
07/01/11 16:28:02
>>592
他に,対象のオブジェクトを参照している最中に
(そのオブジェクトを指している shared_ptr が全て消えることで)
突然そのオブジェクトが死んでしまうような事態を回避することができます.
(この問題はマルチスレッドプログラムで特に顕著だと思いますけれど,
シングルスレッドプログラムでも論理的にはありえるケースです)

void process( weak_ptr< Obj > wp )
{
  if( shared_ptr< Obj > p = wp.lock() ){
    // このスコープ内では, (たとえば他の実行スレッドの動作によって)
    // p の指しているオブジェクトが削除されるようなことはない
  }
  else{
    // wp が指しているオブジェクトが死んでいる場合.
    // ここでどうするかは何を実装するかによります.
    // wp の参照先が常に生存していることが不変条件ならば,
    // 571さんの書いているように論理エラーを通知する (例外を送出する) ことに
    // なるでしょうし,参照先のオブジェクトが死んでいることを検出して
    // 他のアクションを取るようなことも,場合によっては想定されます.
  }
}


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5130日前に更新/175 KB
担当:undef