C++字符类的继承
C++ inheritance for character class
我有一个任务来重新创建游戏。我必须实现一个字符列表。例如,我有一个只有字符名称的Character
类。
现在,我需要创建一个角色Warrior
谁是游戏中的敌人。我需要像这样实现我的继承吗:Character --> Enemy --> Warrior
当我的敌人类基本上没有属性时。这更像是一种分类。
有没有办法在同一类中定义Enemy
和Warrior
,其中Warrior
属于Enemy
类型,属于Character
类型?会有更多的敌人,但只有一个Warrior
.
谢谢
你说敌人的职业基本上没有属性。
现在就是这种情况,但是使用 Enemy 类和继承的一个原因是,它现在通过构建(几乎)透明的灵活性来更好地预测代码的未知未来需求。
您当然可以为 Enemy 类创建一个类型,但随着您添加更多敌人,您可能会发现此解决方案需要越来越多的switch
语句和if
子句形式的代码来检查类型。
如果所有勇士都是敌人,并且拥有敌人的所有属性,那么是的,让勇士成为敌人的子职业是有意义的。
正如一些评论所指出的那样,拥有复杂的继承链是有问题的,并且与糟糕的程序架构无关。
有没有办法在同一职业中定义敌人和战士,其中战士的类型是敌人,哪个类型是角色?
在我们讨论过的继承链中,战士是一种敌人,也是一种角色。
我认为您可能会将类与定义它的文件混淆。不能定义具有两种类型的类。您可以在单个 .h 中定义多个类,并在单个 cpp 文件中实现它们,但从样式上讲,最好在单个 .h/.cpp 对中定义单个类。
相关文章:
- 继承函数的重载解析
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 继承期间显示未知行为的子类
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 头文件-继承c++
- 为什么在保护模式下继承升级不起作用
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 通过继承类使用来自不同命名空间的运算符
- C++字符类的继承
- 提升精神继承的字符串属性填充<int> ASCII 字符中的向量
- 如何使从基类继承的对象访问字符方法,但有自己的结果