字符类的C ++继承

时间:2012-11-09 17:50:41

标签: c++ inheritance

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

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

是否可以在同一个类中定义EnemyWarrior,其中Warrior的类型为Enemy,类型为{{1} }}?会有更多的敌人,但只有一个Character

谢谢

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

如果所有勇士都是敌人,拥有敌人的所有属性,那么是的,让战士成为敌人的子类是有道理的。

正如一些评论所指出的那样,拥有一个复杂的继承链是有问题的,而且对于糟糕的程序架构没有任何意义。

  

有没有办法在同一个类中定义一个敌人和一个战士,其中Warrior属于Enemy类型,类型为Character?

在我们讨论的继承链中,战士是一种类型的敌人。

我认为你可能会将一个类与定义它的文件混淆。您无法定义具有两种类型的类。您可以在单个.h内定义多个类,并在单个cpp文件中实现它们,但在样式方面,最好在单个.h / .cpp对中定义单个类。