【发布时间】:2021-07-08 15:04:14
【问题描述】:
考虑以下代码:
class A {
public:
virtual void f() {
std::cout << "A-F" << std::endl;
}
virtual void g() {
std::cout << "A-G" << std::endl;
}
};
class B: public A {
public:
void f() {
std::cout << "B-F" << std::endl;
}
};
class C: public A {
public:
void g() {
std::cout << "C-G" << std::endl;
}
};
现在我想定义一个类 C,它的成员 f 是类 B,成员 g 来自类 A。像这样:
class D: public B, public C {
public:
\\ Inheritate f from B
\\ Inheritate g from C
};
如何在 C++ 中做到这一点?
【问题讨论】:
-
为什么
class C : public B { ... };不能解决您的问题(前提是您将B::f()标记为覆盖)? -
啊,多重继承的乐趣。像这样的问题是其他语言不支持它的原因。可能有更好的方法,但我可能会实现 C::f 来调用我想要的方法。
-
不需要多重继承,因为继承是传递性的。
-
我意识到我问错了问题,所以我编辑了它。对不起!
-
@JosephLarson 我在这里看不到“问题”。您在这里有两个不同的基本子对象。我可能不是你想要的,但如果是这样,唯一的问题就是滥用非虚拟继承!
标签: c++ inheritance multiple-inheritance