多重继承模糊函数

时间:2012-02-22 09:52:45

标签: c++ stl multiple-inheritance

我正在编写一个应用程序,其中类继承自vector和qt widget类,并且在我调用函数时的一个问题中,这就是> size()编译器抛出错误

ambigious函数调用,

我举一个例子。

class A:public std::vector<int>,public Qwidget
{
    private :

    public:

      int getSize()
        { return this->size(); }
}

我知道问题是因为vector和q

2 个答案:

答案 0 :(得分:4)

您需要使用您实际想要引用的注入基类名称显式限定对size的调用。

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

答案 1 :(得分:0)

在一般情况下,你可以强迫它与using中的一个或哪一个说出:

#include <iostream>

struct A {
  void foo() { std::cout << "A\n"; }
};

struct B {
  void foo() { std::cout << "B\n"; }
};

struct C : A, B {
  using A::foo;
  void bar() {
    foo();
  }
};

int main() {
  C c;
  c.bar();
}

在类中(适用于所有成员函数)或在特定函数内。

然而继承std::vector无论如何都要求麻烦,所以在这种情况下解决方案就是不要继承vector