我有一个钻石型继承结构,如下所示:
class Card {
public:
virtual std::string info() const = 0;
}
class Color : public Card {
public:
virtual std::string info() const = 0;
}
class Deploy : virtual public Color {
public:
virtual std::string info() const = 0;
}
class Attack : virtual public Color {
public:
virtual std::string info() const = 0;
}
class Character : public Attack, public Deploy {
public:
std::string info() { return "My Info" };
}
但在课上,角色对我说:
虚拟函数“Card::info”的覆盖不明确
我想在Character中只声明一个info,我该怎么做?
1条答案
按热度按时间q8l4jmvw1#
除了在类定义的末尾缺少一些
;
和Character::info
的return
语句之外,主要问题是在Character::info
的定义中缺少**const
**限定符。如果方法实际上没有覆盖基类方法,我还会添加
override
,以从编译器获取帮助: