多重继承的双重功能

multiple inheritance ambigious function

本文关键字:功能 多重继承      更新时间:2023-10-16

我正在编写一个应用程序,其中in类也继承了vector和qt小部件类,在其中一个问题中,当我调用一个函数时,这个->size()编译器抛出了一个错误

异常功能调用

我举一个例子。

class A:public std::vector<int>,public Qwidget
{
    private :
    public:
      int getSize()
        { return this->size(); }
}

我知道这个问题是因为向量和q

您需要用实际要引用的注入基类名称明确限定调用的大小。

然而,你所做的是极其邪恶的。std::vector不打算从继承(并且您的代码永远不会编译:它是一个模板)。如果你真的需要一个带有信号/插槽恶作剧的序列容器,你应该使用QList。

在一般情况下,您可以用using强制它是一个或另一个来说明哪个:

#include <iostream>
struct A {
  void foo() { std::cout << "An"; }
};
struct B {
  void foo() { std::cout << "Bn"; }
};
struct C : A, B {
  using A::foo;
  void bar() {
    foo();
  }
};
int main() {
  C c;
  c.bar();
}

要么在类内(适用于所有成员函数),要么在特定函数内。

但是std::vector继承无论如何都会带来麻烦,因此在这种情况下,解决方案只是不从vector继承。