C++子类继承

C++ subclass inheritance

本文关键字:继承 子类 C++      更新时间:2023-10-16

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

假设我们有 4 个类

  1. 类 A 是基类
  2. 类 B 使用新方法从 A 派生(无覆盖(
  3. C 类派生自 A
  4. D类派生自B(也派生自A表示继承(

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

以下是它是如何完成的 - 根据您的描述:

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

请注意,不应直接从A继承 D,除非在非常特殊和极少数情况下。继承是可传递的。

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

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