C ++子类继承

时间:2018-06-02 17:06:28

标签: c++ inheritance multiple-inheritance

好的,这可能是一个愚蠢的问题,但我无法弄清楚如何解决我的问题。

我们假设我们有4个班级

  1. A类是基类
  2. B类是使用新方法(无覆盖)
  3. 从A派生的
  4. C类源自A
  5. D类派生自B(以及A代表继承)
  6. 我的问题是:如何在D中使用B中定义的方法? 如果D继承自B,我得到“错误:成员'xxx'在不同类型的多个基类中找到” 如果D不从B继承我得到“使用未声明的标识符”

1 个答案:

答案 0 :(得分:2)

根据您的描述,这是如何完成的:

class A {
protected:
    void foo();
};

class B : public A {
protected:
    void bar();
};

class D : public B {
protected:
    void baz() { B::bar(); }
};

请注意,您应该直接从A继承D,除非是非常特殊且极少数情况。继承是传递性的。

另外,下次请发布一个Minimal, Complete, and Verifiable示例,不要让我们猜到你的意思。

在那些可以从多个继承路径的相同子类中获得相同方法的情况下,是“Diamond Pattern”,您可以阅读它here