具有相同名称的函数的多重继承

时间:2018-07-23 15:19:33

标签: c++ multiple-inheritance

我是C++的新手,最近我发现一件事我根本无法弄清它为什么会如此运行。

想象一下,我们有三个班级。由Class AClass B衍生而来的Class CClass AClass B

class A {
protected:
    void func() { cout << "A func" << endl; }
};

class B {
protected:
    void func() { cout << "B func" << endl; }
};

class C : public A, public B {
public:
    void check(){
        A::func(); // Works.
        B::func(); // Works.
        this.A::func(); // Doesn't work.
        this.B::func(); // Doesn't work.

        this->A::func(); // Doesn't work, too...
        this->B::func(); // Doesn't work, too...
    }
};

我想知道为什么会这样,如果有人回答我,我将非常感激。

1 个答案:

答案 0 :(得分:3)

您应该在check每行的末尾添加分号(不在注释中),并尝试像这样编写最后两个调用:

this->A::func();

在C ++中,this具有指针类型。