【发布时间】:2016-02-28 03:35:25
【问题描述】:
我在让重载的构造函数工作时遇到问题。不断收到一个问题,说只有一个复制构造函数和析构函数。我应该使用私有枚举技术,因此使用setWeaponSword()(最后四个函数)之类的成员函数。
这是我的班级声明:
class Knight{
public:
enum Race{ ALTMER, IMPERIAL, KHAJIIT };
Knight(Race newRace, short int newHealth, short int newStamina, Weapon newWeapon);
Knight(const Knight &copiedKnight);
~Knight();
void setRace(const Race newRace);
Race getRace();
void setHealth(const short int newHealth);
short int getHealth();
void setStamina(const short int newStamina);
short int getStamina();
void setWeaponBow();
bool isWeaponBow();
void setWeaponSword();
bool isWeaponSword();
private:
enum Weapon { BOW , SWORD};
Race race;
short int health;
short int stamina;
Weapon weapon;
};
这是它的简单成员函数文件:
//Defualt values for variables Needed
Knight::Knight(Race newRace, short int newHealth, short int newStamina, Weapon newWeapon) : newRace(IMPERIAL), newHealth(50), newStamina(35), newWeapon(SWORD)
{
setRace(newRace);
setHealth(newHealth);
setStamina(newStamina);
}
我的思考过程是。如果找不到,我无法在 main 中传递 Weapon。这就是为什么我认为我必须使用班级中的最后四个函数来操作数据以获取它。我不知道怎么做。请告诉我一些基本知识。
【问题讨论】:
-
什么是错误,它发生在哪里?此外,让一个复制 ctor 通过非常量引用来获取它是很奇怪的。
-
也许您的编译器知道 Skyrim 属于 Nords,并且在您包含它们之前完全拒绝编译您的程序。
-
@JamesRoot 发生在我的重载构造函数的类声明中。
-
创建一个minimal reproducible example,其中仅包含重现错误所需的代码。