提供されているDestroyメソッドを使用する以外に、クラス階層からオブジェクトを削除できないようにしたいと思います。
理論的根拠は、この階層のオブジェクトは、別のスレッドがオブジェクトを使用しているときにオブジェクトが削除されないようにするために、オブジェクト自体の破棄を開始する前に特別な書き込みミューテックスを取得する必要があるということです。
参照カウントでこの問題を防ぐことができることはわかっていますが、パフォーマンスへの潜在的な影響とメモリ割り当ての観点からも、システムに大きな変化をもたらすでしょう。
どういうわけか効率的/スマートにすべてのデストラクタを保護して、部外者がDestroyを使用しなければならないときに、子クラスが親のデストラクタを呼び出すことができるようにする方法はありますか?
私が思いついた安全な(つまり、腐敗しない)解決策の1つは、すべてのデストラクタをプライベートにし、各派生クラスを基本クラスのフレンドとして宣言することですが、よりエレガントで、手動ではなく、より簡単なものを好みます維持する(基本クラスから派生するために基本クラスを変更する必要がないなど)。
このようなものはありますか?たぶん、私が望むように物事を「機能させる」いくつかの賢いトリックですか?
ps。私が今のところ選択した解決策は、すべての場合に誰もがdeleteを呼び出さないようにするのではなく(基本クラスで保護されただけです)、この状況を検出し、基本クラスのデストラクタでabortを呼び出すことです。