shared_ptr/weak_ptr
弱い参照をオブジェクトに保存することはできますが、弱いものを受け取った人がそれを変換して共有として保存することはできません。だから、私はオブジェクトの生涯のコントロールを失う。弱い参照をオブジェクトに保持し、そのライフタイムを制御する方法はありますか?unique_ptr
はオブジェクトの有効期間を制御できますが、弱い参照メカニズムはありません。
ライフタイムコントロールと弱い参照の利点を同時に得る標準的な方法が見つかりませんでした。私はこの問題に遭遇する唯一の人だとは信じられません。
この動作を可能にするものは、標準または追加で何かありますか? 完全なsmart_ptr
クラスを書き直すことなくこれを可能にするパターンがありますか?
関連http://stackoverflow.com/questions/17536731/shared-ptr-is-to-weak-ptr-as-unique-ptr-is-to-what。 'std :: experimental :: observer_ptr'もありますが、unique_ptrが削除されてもnullにはなりません。 – kennytm
これは 'weak_ptr'の一種のポイントです。クライアントが参照されたオブジェクトを使用すると、クライアントは参照されたオブジェクトを使用期間中共有に変換して、削除されないようにします。 'weak_ptr'を所有しているクライアントは、オブジェクトを使用する前に、オブジェクトの存続期間の部分的所有権を引き受ける何らかの方法を必要とします。 – lcs
unique_ptrの場合、weak_ptrのようなメカニズムは必要ありません。その中に格納されているオブジェクトの存続期間は、すべての参照の存続期間を超えなければならず、このオブジェクトを参照するすべてのコードは、コードのある部分が実際にそのオブジェクトが存在しないことを期待している場合は、[boost :: optional_reference](http://www.boost。org/doc/libs/1_63_0/libs/optional/doc/html/boost_optional/tutorial/optional_references.html)を参照してください。 – dodo951