【发布时间】:2020-11-03 18:28:56
【问题描述】:
我有一个基类Character,可以Attack(),以及派生类Magician(10)、Elf(5) 或Giant(15)。
魔术师可以进化到BlackMagician(15)
Character 的每种类型都有一个已定义的Power(在括号中)。我的问题是如何将一个类与一个静态函数 getFamilyPower() 相关联并相应地覆盖它。
代码如下: https://codecollab.io/@sdudnic/warriors
思路如下:
class Character {
static int power;
public:
static int getPower() { return power; }
virtual int Attack(Character *other) { /*...*/ }
};
class Magician : public Character {
static int power = 10;
public:
static int getPower() {return power; }
};
class Elf : public Character {
static int power = 5;
public:
static int getPower() {return power; }
};
class Giant : public Character {
static int power = 15;
public:
static int getPower() {return power; }
};
【问题讨论】:
-
请显示代码,而不是仅仅描述它。
-
我不知道我是否做对了,但在我看来,您要么希望 Character.Attack() 是虚拟的,要么拥有一个由您的派生设置的 Character::power 成员类并由 Character.Attack() 使用。
-
你只能覆盖一个虚函数,所以没有静态的。
-
没有参数的静态函数应该如何知道使用的是哪个实例?
-
@Surt 他说的是覆盖,而不是重载
标签: c++ overriding static-methods static-members