【问题标题】:Parallel class hirarchy c++ ends up in abstract class [duplicate]并行类层次结构c ++最终出现在抽象类中[重复]
【发布时间】:2020-08-12 08:14:26
【问题描述】:

为什么这个简单的类层次结构最终会出现在抽象类 B 中?在这种情况下,我不知道要搜索的流行词。 (也许是钻石问题?)

class I_A
{
    virtual void foo() = 0;
};

class I_B : public I_A
{
    virtual void bar() = 0;
};

class A : public I_A
{
    void foo() override {}
};

class B: public A, public I_B
{
    void bar() override {}
};

B b;  ///< Compiler says it is abstract

【问题讨论】:

标签: c++ multiple-inheritance


【解决方案1】:

看起来B继承自A,A继承自I_B,I_B继承自I_A。 B 也继承自 I_B,而 I_B 又继承自 I_A。

diamond inheritance problem 是要搜索的关键字,因为您以两种不同的方式继承同一事物。 Stroustrup 提到了这一点以及如何做的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    相关资源
    最近更新 更多