此刻,我正在用C ++编写游戏引擎。我有一堆类都是从基类GameObject派生的。
现在的问题是,我想为某些班级及其子女进行过滤。
例如。 GameObject-> Enemy-> standardGuy和GameObject-> Enemy-> toughGuy
在我的播放器类中,大多数时候我只能寻找Enemy对象并使用Enemy *指针来处理它们。 例如。如果我触摸它们。我死。不管是子类。
但是有时候,例如,如果hardGuy完全不受某些武器的干扰,我想在它们之间进行区分。
当然,树可以变得很深。特定的敌人类型可以在某种AI例程或某些程序中寻找特定的其他敌人类型。
到目前为止,我已经通过为类提供ID属性和GetID()方法来标识它们。但这实际上仅适用于层次结构的第一层。
我曾考虑过为每个进一步降低等级的人分配自己的附加ID。如subID,subSubID,subSubSubId等。但这似乎有点愚蠢。
有什么标准可以处理吗?