C++字符类的继承

C++ inheritance for character class

本文关键字:继承 字符 C++      更新时间:2023-10-16

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

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

有没有办法在同一类中定义EnemyWarrior,其中Warrior属于Enemy类型,属于Character类型?会有更多的敌人,但只有一个Warrior.

谢谢

你说敌人的职业基本上没有属性。

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

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

如果所有勇士都是敌人,并且拥有敌人的所有属性,那么是的,让勇士成为敌人的子职业是有意义的。

正如一些评论所指出的那样,拥有复杂的继承链是有问题的,并且与糟糕的程序架构无关。

有没有办法在同一职业中定义敌人和战士,其中战士的类型是敌人,哪个类型是角色?

在我们讨论过的继承链中,战士是一种敌人,也是一种角色。

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