c++ - 当基类为一个方法共享相同的名称时,多重继承 C++ 有一些限制吗?

标签 c++ inheritance multiple-inheritance

我以前从未在 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/

相关文章:

c# - 接口(interface)实现两次 "types may unify";为什么此解决方法有效?

java - 我如何使用子类中的父类方法

c++ - 多重继承会调用哪个实例?

python - 对于旧式和新式,该类层次结构的 MRO 是否相同?

c++ - 我可以在 C++ 中做/模仿这样的事情(部分覆盖)吗?

c++ - 是否可以为 AVR 编写一个 constexpr 舍入函数?

C++ 最长单词出现次数,出现 '\0' 错误

c++ - 堆变量作用域

java - 有没有办法将 "override"本质上作为最终变量?

c++ - 使用 boost::python 调用一个带有指向数组的指针的 C++ 函数