@Fanael chyba nie doczytał pierwszego posta ;)
Dziedziczysz dwukrotnie z tej samej klasy - interfejsu, o ile dobrze rozumuje?
Opcje są 2:
- Dziedziczenie wirtualne, przy klasie z której dziedziczysz wiecej niż raz. Da to taki efekt że ta klasa będzie odziedziczona tylko raz (będzie wspólna dla obu klas dziedziczących z niej)
- Musisz sprecyzować z której klasy pochodzą funkcje z których chcesz korzystać (bo są przecież w 2 kopiach, pochodząc z różnych klas bazowych)
Nie wiem czy wyrazilem sie jasno wiec moze coś w stylu przykładu:
class BaseInterface {};
class Interface1: public BaseInterface {};
class Interface2: public BaseInterface {};
class Objects: public Interface1, public Interface2 {};
Taka hierarchia powoduje pewien problem, ponieważ Objects zawiera dwukrotnie funkcje z BaseInterface. Jeśli spróbujesz użyć którejś z tych metod na obiekcie Objects to okaże się że nie da rady, bo nie doprecyzowałeś z której klasy bazowej ma pochodzić metoda.
Rozwiazanie nr 1 wygląda tak:
class BaseInterface {};
class Interface1: public virtual BaseInterface {};
class Interface2: public virtual BaseInterface {};
class Objects: public Interface1, public Interface2 {};
Rozwiązanie nr 2 wymaga troche uses i komplikacji przy implementowaniu obu zestawów funkcji czysto wirtualnych