C ++子类继承

C++ subclass inheritance

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

假设我们有4个班

  • A类是基类
  • 类B是从具有新方法的A派生的(无重写)
  • C类源于
  • D类是从B派生的(也是从A派生的,用于继承)
  • 我的问题是:如何使用D中b定义的方法?如果d继承自b,则得到"错误:在不同类型的多个基类中找到成员'xxx'"如果d不从b继承,我得到"使用未声明的标识符"


    以下是操作方法-根据您的描述:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class A {
    protected:
        void foo();
    };

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

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

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

    另外,下一次,请张贴一个最小的,完整的,可验证的例子,不要让我们猜测你确切的意思。

    在这些情况下,来自多个继承路径的相同子类中的相同方法是"菱形模式",您可以在这里了解它。