【问题标题】:C++ subclass inheritanceC++子类继承
【发布时间】:2018-11-12 12:42:32
【问题描述】:

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

假设我们有 4 个类

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

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

【问题讨论】:

标签: c++ inheritance multiple-inheritance


【解决方案1】:

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

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 示例,不要让我们猜测您的确切意思。

在多个继承路径的相同子类中可以使用相同方法的情况下,称为“钻石模式”,您可以阅读here

【讨论】:

    猜你喜欢
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多