Boostを語れゴラァ part3
at TECH
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