很长一段时间以来,我一直在寻找一种干净的方式来做到这一点。在我的问题中,存在 3 个类不共享任何父类,但每个类都有一些同名的方法(A.doSomething、B.doSomething、C.doSomething)。因此,具有相同的函数签名,类 D 从 A 继承并使用方法 doSomething() 将“看起来相同”,以 E 从 B 或 C 继承。
这是我想做的事情的草图:
class Base {
public:
void myMethod(void) { doSomething(); }
};
class Independent {
public:
doSomething();
};
clase Derived : public Base : public Independent {
(...)
};
int main(void) {
Derived *derivedObject = new Derived();
derivedObject->myMethod();
}
在这个问题中,“独立”类型的对象由我无法更改的库提供。我想定义一个使用稍后将被继承的方法的基类。我找不到使用虚拟继承来执行此操作而不会导致编译不明确的正确方法。