首页 > 解决方案 > C++子类继承

问题描述

好的,这可能是个愚蠢的问题,但我不知道如何解决我的问题。

假设我们有 4 个类

  1. A 类是基类
  2. B 类从 A 派生,具有新方法(无覆盖)
  3. C 类派生自 A
  4. D 类从 B 派生(也从 A 继承)

我的问题是:如何使用 D 中 B 中定义的方法?如果 D 从 BI 继承得到“错误:在不同类型的多个基类中发现成员 'xxx'” 如果 D 不从 BI 继承得到“使用未声明的标识符”

标签: c++inheritancemultiple-inheritance

解决方案


这是它的完成方式 - 根据您的描述:

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

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

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

请注意,您不应该直接从 D 继承A,除非在非常特殊和罕见的情况下。继承是传递的。

另外,下一次,请发布一个最小、完整和可验证的示例,不要让我们猜测您的确切意思。

在那些从多个继承路径的相同子类中可以使用相同方法的情况下,就是“钻石模式”,您可以在此处阅读有关它的信息。


推荐阅读