3

boost::shared_ptrカスタム削除機能が添付されています。これをに変換するweak_ptrと、削除者情報が失われますか?shared_ptrはいの場合、メソッドから取得した-sに同じ削除プログラムを再アタッチするにはどうすればよいweak_ptr::lock()ですか?

私が実装している機能は、weak_ptrあるタイプの生きているインスタンスを指す-sのコンテナーです。削除するオブジェクトのコンテナエントリを削除するには、カスタム削除機能が必要です。

4

1 に答える 1

3

いいえ、カスタム削除機能が失われることはありません。

lock()あなたがあなたのとき、あなたは最初にfromを作成するために使用したものと同じカスタム削除者(および他の属性)でweak_ptrを取り戻します。shared_ptrweak_ptr

ただし、shared_ptr参照がweak_ptrなくなった場合、lock()は失敗し、nullを返しますshared_ptr

つまり、カスタム削除機能について気にする必要はありません。作成時に指定したshared_ptr場合は、最後の関連shared_ptrが解放されたときに呼び出されます。

于 2010-09-01T06:32:09.480 に答える