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