Я давно ищу чистый способ сделать это. В моей проблеме существует 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();
}
В этой задаче объект типа "Независимый" предоставляется библиотекой, которую я не могу изменить. Я хотел бы определить базовый класс, который использует методы, которые будут наследоваться позже. Я не мог найти правильный способ сделать это, используя виртуальное наследование, не вызывая неоднозначной компиляции.