【发布时间】:2020-03-14 07:12:54
【问题描述】:
*我的 C++ 技能很少。我是一名 17 岁的程序员,正在尝试学习 c++。
我正在尝试制作一个有趣的项目来帮助我学习 C++。这段代码就是其中的一部分。我正在从一个名为 Weapon_definition 的设备基类创建一个派生类。在其中,我想将基类中的变量带入这个类,并在调用某种武器时赋予它们新的值。因此,如果调用 shortsword,则武器类对象会更改其值。然后在另一个函数中调用此武器类对象,以明确将其值复制到其他地方。库存系统几乎就是这一切。问题本身就是这个,有没有更好或更简单的方法来写这个?我这样写的想法是我可以永远扩展它,并且不需要太多代码来添加或删除片段。我可以使用新的外部类对象和类制作新的部分,例如可装备的珠宝或盔甲。
头文件
#ifndef EQUIPMENT_H
#define EQUIPMENT_H
#include <string>
class Equipment_definition{
public:
int value;
int growth;
std::string Tag;
std::string Title;
};
class Weapon_definition: public Equipment_definition{
public:
static void Short_Sword();
static void Long_Sword();
};
extern Weapon_definition Weapon;
#endif
CPP 文件
#include "Equipment.h"
Weapon_definition Weapon;
void Weapon_definition::Short_Sword(){
Weapon.Title = "Shortsword";
Weapon.Tag = "[Light Weapon]";
Weapon.value = 2;
Weapon.growth = 1;
}
void Weapon_definition::Long_Sword(){
Weapon.Title = "Longsword";
Weapon.Tag = "[Heavy Weapon]";
Weapon.value = 5;
Weapon.growth = 0;
}
【问题讨论】:
-
"有没有更好的方法来编写这个 c++ 代码" - 当然。第一件事是让它编译。创建minimal reproducible example。
-
通常情况下,您的类层次结构将沿着基类
Weapon的线条,并带有诸如Long_sword之类的后代。你不会有“设备定义”。 -
考虑使用enumerated type 而不是
Tag的字符串。获取一些solid reference materials。给出的代码示例告诉我,无论你现在从中学到什么,都对你没有任何帮助。 -
这是您第一次使用 OO 进行编程吗?看来您应该看一下Inheritance之类的基本概念
-
@user4581301 长剑不能被所有角色职业使用,可能有更多的武器类别细节需要放在某个地方:-)
标签: c++ class oop object derived-class