我正在编写一个应用程序,其中类继承自vector和qt widget类,并且在我调用函数时的一个问题中,这就是> size()编译器抛出错误
ambigious函数调用,
我举一个例子。
class A:public std::vector<int>,public Qwidget
{
private :
public:
int getSize()
{ return this->size(); }
}
我知道问题是因为vector和q
答案 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
。