在我的游戏中,有很多Foo类的对象互相交互。类Foo的静态方法使用容器更新所有对象,以便跟踪创建的对象。任何时候都可能死于多个对象的对象
我的问题是,一个Foo对象可能会杀死另一个对象,Foo的其他实例不知道这个可怕的事件,他们可以使用死对象(删除),从而给出一个错误。
我有一些想法,以避免指针删除的对象,但我不认为他们是合适的。
1)一类智能指针的用于检查空对象。
大概这是糟糕的想法,我也没看不出任何地方这样的事情。我可以创建一个指针,当调用delete时,删除指向的Foo对象,然后在转换为Boolean时给出false(所以可以知道是否可以调用它的方法)。
2)每个Foo对象不与一个指针,但与ID跟踪其他对象。
然后对象通过Foo类的静态方法获取指向另一个Foo对象的指针(正如我所说的Foo类有一个跟踪所有实例的容器)。 它也可以在多线程环境中进行简单的修改,但它可能非常广泛,每个对象在每个帧期间都会在容器中搜索另一个对象。
3)每个Foo对象跟踪具有一个指向它的指针的对象。 该对象在杀死(删除)时调用其他对象的方法。然后这些对象删除指向已删除对象的指针。还有其他的课程。所以这不是真正的面向对象。
我实际上认为有一个简单的解决方案,我找不到。