4

我有一个重新创建游戏的任务。我必须实现一个字符列表。例如,我有一个Character只有角色名称的类。

现在,我需要创建一个Warrior在游戏中是敌人的角色。我是否需要像这样实现我的继承:Character --> Enemy --> Warrior当我的敌人类基本上没有属性时。这更像是一种分类。

有没有办法在同一个类中定义一个Enemy和一个,类型在哪里,类型在哪里?会有更多的敌人,但只有一个。WarriorWarriorEnemyCharacterWarrior

谢谢

4

2 回答 2

4

你说敌人类基本没有属性。

现在就是这种情况,但是使用 Enemy 类和继承的一个原因是,它现在通过构建(几乎)透明的灵​​活性更好地预测代码的未知未来需求。

您当然可以为 Enemy 类创建一个类型,但是当您添加更多敌人时,您可能会发现此解决方案需要越来越多的switch语句和if子句形式的代码来检查类型。

于 2012-11-09T17:56:04.693 回答
2

如果所有战士都是敌人,并且具有敌人的所有属性,那么是的,将战士作为敌人的子类是有意义的。

正如一些评论指出的那样,拥有一个复杂的继承链是有问题的,并且没有不良程序架构的症状。

有没有办法在同一个类中定义一个 Enemy 和一个 Warrior,其中 Warrior 是 Enemy 类型,而 Enemy 是 Character 类型?

在我们讨论过的继承链中,Warrior 是 Type of Enemy,也是 Type of Character。

我认为您可能会将类与定义它的文件混淆。您不能定义具有两种类型的类。您可以在单个 .h 中定义多个类并在单个 cpp 文件中实现它们,但从风格上讲,最好在单个 .h/.cpp 对中定义单个类。

于 2012-11-09T17:56:45.543 回答