c++ 使用菱形继承重写不明确的虚函数

guicsvcw  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(236)

我有一个钻石型继承结构,如下所示:

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,我该怎么做?

q8l4jmvw

q8l4jmvw1#

除了在类定义的末尾缺少一些;Character::inforeturn语句之外,主要问题是在Character::info的定义中缺少**const**限定符。
如果方法实际上没有覆盖基类方法,我还会添加override,以从编译器获取帮助:

//-----------------vvvvv-vvvvvvvv----------------------
std::string info() const override { return "My Info"; };

相关问题