多重继承的双重功能
multiple inheritance ambigious function
我正在编写一个应用程序,其中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
继承。
相关文章:
- 关于C++中具有多重继承"this"指针的说明
- C++中模板化异常类的多重继承
- 虚拟继承中是否存在多重继承?
- 如何在 c++ 多重继承中调用父非虚函数?
- 多重继承相同的方法名,没有歧义
- 使用enable_if解决多重继承歧义
- 多重继承导致虚假的模糊虚拟函数过载
- 多重继承和访问不明确的元素
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- 多重继承中的派生类的行为类似于聚合
- 为什么我的 Hippomock 期望在使用多重继承时失败
- 带有此指针的模板类多重继承构造函数不起作用?
- 使用多重继承时出现编译错误
- 增强多重继承的序列化
- 多重继承:跳过'virtual'关键字并拒绝菱形层次结构的使用?
- 仅函数的多重继承 - 没有虚拟和 CRTP
- C++多重继承和鸭子类型
- C++两次从文件保存对象读取多重继承
- 多重继承的双重功能
- 虚拟功能实现和多重继承