【发布时间】:2013-03-21 15:13:04
【问题描述】:
在我的游戏引擎中,共有三个类:EntityCharacter、EntityVehicle和EntityVehicleSeat。
EntityVehicle 包含带有指向 EntityCharacter 实例的指针的座位对象。如果座位对象的目标字符实体指针是空指针,则没有字符坐在该特定座位对象上。 EntityCharacter 类实例也有指向座位对象的指针,指示这些角色实体是否坐在某些车辆中。
换句话说,EntityCharacter 类实例有一个指向 EntityVehicleSeat 的指针,反之亦然:
EntityCharacter -> EntityVehicleSeat
EntityCharacter <- EntityVehicleSeat
这样我们可以通过角色和车辆实体来检查所有权。
将指针设置为相互指向很简单,但有一个问题 - 如果另一个对象超出范围,我们最终会在剩余对象中拥有一个无效的指针。
如何巧妙地表达这种所有权?如何通知另一个对象另一个对象不再存在?
【问题讨论】:
-
在析构函数上使用通知。
-
你能用析构函数通知其他对象吗?
-
这只是一对一的关系吗?
标签: c++ pointers ownership nullptr