07/01/07 20:29:47
>>558
>単にポインタに置き換えるだけだと、自動で消えないからマズいんですよね??
いや, weak_ptr の機能は参照先のオブジェクトの生存管理と直接は無関係です.
普通のポインタで参照していようが, weak_ptr で参照していようが,
shared_ptr による参照カウントが0になればそのオブジェクトは消えます.
単なるポインタと比較した場合の weak_ptr の利点は,
-参照先のオブジェクトが生存しているかどうかを調べることができて,かつ
-shared_ptr に格上げできる
ことです.
いずれにせよ, shared_ptr による循環参照の問題の解決するにあたって,
必ず weak_ptr の機能が必要になるわけではないです.
単に weak_ptr の機能を理解しようとするだけなら,
循環参照の問題はとりあえず脇に置いておいた方が良いような気がします.