好的,这可能是一个愚蠢的问题,但我无法弄清楚如何解决我的问题。
我们假设我们有4个班级
我的问题是:如何在D中使用B中定义的方法? 如果D继承自B,我得到“错误:成员'xxx'在不同类型的多个基类中找到” 如果D不从B继承我得到“使用未声明的标识符”
答案 0 :(得分:2)
根据您的描述,这是如何完成的:
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示例,不要让我们猜到你的意思。
在那些可以从多个继承路径的相同子类中获得相同方法的情况下,是“Diamond Pattern”,您可以阅读它here。