我正在使用模拟框架。生成的每个粒子都有一个指向 UserInfo 对象的指针槽(因此您可以将所需的任何信息附加到粒子)。问题在于,每当粒子被杀死时,框架都会删除此用户信息。由于有数以百万计的粒子,通常具有重复的信息,我只想在信息不同时创建一个新的 UserInfo 对象。当然,问题是每当一个粒子被杀死时,它都会删除它有一个指针指向的 UserInfo 对象(不管同一个对象是否也附加到某个其他粒子。)
当粒子被杀死时,我需要采取哪些步骤来防止粒子删除 UserInfo 对象?我意识到我需要为我的 UserInfo 类做一些引用计数和重载删除。但是,我以前从未重载过 delete,所以我有几个问题:
如果我有一个类层次结构,例如:
class VirtualUserInfo; class A : public VirtualUserInfo; class B : public A ...etc
我在A类中重载delete,如果在指向VirtualUserInfo的指针或指向B类的指针上调用delete,它会起作用吗?(非常相似,如何重载 new 才能正常工作?是否需要为每个新的派生类再次重载 new ?)
使用奇怪重复的模板模式很容易进行引用计数。有没有办法以这种混合风格的方式也包括删除行为?将这种类型的行为应用于我要编写的任何类型的 UserInfo 会很好。
有没有一些更酷/更好的方法来做我想做的事情?