私は長い間、これを行うためのクリーンな方法を探しています。私の問題では、親を共有していないが、それぞれが同じ名前のメソッド(A.doSomething、B.doSomething、C.doSomething)を持つ3つのクラスが存在します。したがって、同じ関数シグネチャを持ち、Aから継承し、メソッドdoSomething()を使用するクラスDは、BまたはCから継承するEと「同じように見えます」。
これが私がやりたいことのスケッチです:
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();
}
この問題では、タイプ「Independent」のオブジェクトが、変更できないライブラリによって提供されています。後で継承されるメソッドを使用する基本クラスを定義したいと思います。あいまいなコンパイルを行わずに、仮想継承を使用してこれを行う適切な方法を見つけることができませんでした。