私はunique_ptrvs shared_ptrvsの使用について熟考してきましたown_solution。ほぼ間違いなく間違いを犯すので、後者を割引しましたが、両方に問題があり、unique_ptrどちらshared_ptrも私が望むものを正確に捉えていません。リソースを明示的に所有するリソース マネージャーを作成したいのですが、リソース マネージャーがリソースへの参照も配布するようにしたいと考えています。
リソースマネージャーで使用unique_ptrして生のポインターを渡すと、他の場所に逃げる可能性があります (ただし、これはクラスの「契約」に反すると思います)。を使用shared_ptrして配布すると、呼び出し元が を に変換して保存するのをweak_ptr止めるものは何もないため、サイクルが発生する可能性があり、さらに悪いことに、リソース マネージャーの有効期間を超えてリソースが存続する可能性があります。だから私が探しているのは、に変換できないdeferencable だと思います。weak_ptrshared_ptrweak_ptrshared_ptr
それとも、コード内のいくつかの強い言葉のコメントで契約を強制しようとしているだけですか?
これについてご意見をお寄せいただきありがとうございます。