在我的游戏引擎中,共有三个类:EntityCharacter、EntityVehicle和EntityVehicleSeat。
EntityVehicle包含带有指向EntityCharacter实例的指针的座位对象。如果座位对象的目标字符实体指针是空指针,则没有字符坐在该特定座位对象上。EntityCharacter 类实例还具有指向座位对象的指针,指示这些角色实体是否坐在某些车辆中。
换句话说,EntityCharacter 类实例有一个指向 EntityVehicleSeat 的指针,反之亦然:
EntityCharacter -> EntityVehicleSeat
EntityCharacter <- EntityVehicleSeat
这样我们就可以通过角色和车辆实体检查这个所有权。
将指针设置为相互指向很简单,但是有一个问题 - 如果另一个对象超出范围,我们最终会在剩余对象中拥有一个无效的指针。
怎样才能巧妙地表达这种所有权?如何通知另一个对象另一个对象不再存在的事实?