Cześć!
Od razu załączam poglądowy rysunek:
Powyżej stan obecny i pożądany. Myślę, że stan obecny jest łatwy w zrozumieniu.
Co jest najważniejsze z tego stanu?
- To, że klasa zawierająca (Manager) i zawierana (SpecificObjectIf) dziedziczą z tego samego interfejsu, co oznacza, że funkcja, której używają obie klasy ma tę samą sygnaturę.
Okey. Co chcemy zmienić? Co chcemy osiągnąć?
W skrócie: chcemy, żeby klasa Manager miała metodę getParam, która będzie przyjmowała parametr int.
Niby proste, ale nie do końca:
- jak dodamy taką metodę w interfejsie ConfigIf, to klasa dziedzicząca po SpecificObjectIf będzie musiała ją sobie zaimplementować, co jest tej klasie zupełnie niepotrzebne
- jak byśmy dodali tę metodę tylko do interfejsu ManagerIf, to clang zacznie nam mówić: hidden overloaded virtual function ... declared here: different number of parameters
Wyłączenie tego błędu clanga nie wchodzi w grę.
W związku z powyższym chciałem zapytać Was o zdanie: jakie najbardziej optymalne rozwiązanie tu widzicie?
Jednym z takowych może być rozdzielenie tego interfejsu ConfigIf, ale chciałem poznać jeszcze inny punkt widzenia.
Dzięki z góry!