我以前从未在 C++ 中使用过多重继承,但我很好奇,因为我在一本书中看到了一个编织 bst 的实现,通过一个基类 List 和一个基类 BinarySearch 树的多重继承.
现在我试图编一些愚蠢的例子来理解它是如何工作的。
所以我想到了这个:
class Base1 {
public:
virtual void method();
};
class Base2 {
public:
virtual void method();
};
class Derivate : public Base1, Base2 {
};
主要是我做了这样的事情:
Derivate d;
d.method();
代码无法编译,还有其他代码实现了这两种方法,但我没有发布所有代码,因为我想我还是表达了我的观点。
对我来说,它不能编译听起来很公平,因为可能不知道派生类具体应该引用哪个方法,但是我可能想扩展两个基类实际上共享一个方法名称(想想 list 和 bst 你可以有一个方法“插入”和“删除”)所以一般来说,对于这种“关键情况”,多重继承是如何工作的?如果像我介绍的那样,有没有办法以优雅的方式解决问题?
最佳答案
你可以这样写:
class Derivate : public Base1, Base2 {
public:
using Base1::method;
};
关于c++ - 当基类为一个方法共享相同的名称时,多重继承 C++ 有一些限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33363601/