私はシミュレーションフレームワークを使用しています。生成される各パーティクルには、UserInfoオブジェクトへのポインタ用のスロットがあります(したがって、必要な情報をパーティクルに添付できます)。問題は、パーティクルが強制終了されるたびに、フレームワークがこのユーザー情報を削除することです。何百万ものパーティクルがあり、多くの場合情報が重複しているため、情報が異なる場合にのみ新しいUserInfoオブジェクトを作成したいと思います。もちろん、問題は、パーティクルが強制終了されるたびに、ポインタを持つUserInfoオブジェクトが削除されることです(同じオブジェクトが他のパーティクルにもアタッチされているかどうかは関係ありません)。
パーティクルが強制終了されたときにパーティクルがUserInfoオブジェクトを削除しないようにするには、どのような手順を実行する必要がありますか?UserInfoクラスに対して参照カウントとオーバーロード削除を行う必要があることに気付きました。ただし、これまで削除をオーバーロードしたことがないので、いくつか質問があります。
次のようなクラス階層がある場合:
class VirtualUserInfo; class A : public VirtualUserInfo; class B : public A ...etc
クラスAでdeleteをオーバーロードしますが、VirtualUserInfoへのポインターまたはクラスBへのポインターでdeleteが呼び出された場合、機能しますか?(同様に、正しく機能するためにnewをオーバーロードするにはどうすればよいですか?新しい派生クラスごとにnewを再度オーバーロードする必要がありますか?)
不思議なことに繰り返されるテンプレートパターンを使用して、参照カウントを行うのは簡単です。このようなミックスインスタイルの方法で削除動作を含める方法はありますか?このタイプの動作を、私が作成するすべてのタイプのUserInfoに適用すると便利です。
私がやりたいことをするためのよりクールでより良い方法はありますか?