У меня есть несколько абстрактных базовых классов, которые действуют как интерфейсы, известные из Java или C #, скажем, это A, B и C.
Теперь у меня есть несколько конкретных классов, каждый из которых реализует подмножество интерфейсов.:
class Concrete1: public A, public B
class Concrete2: public A, public C
class Concrete3: public A, public C
В какой-то момент я хотел бы иметь метод, который требует своего аргумента для реализации A и C (поэтому должна быть возможность передавать Concrete2 и Concrete3).
Iмог бы сделать
class AC: public A, public C
class Concrete1: public A, public B
class Concrete2: public AC
class Concrete3: public AC
и принять указатель на AC, но мне не нравится этот подход, потому что он может закончиться чем-то вроде
class AC: public A, public C
class AB: public A, public B
class ABC: public A, public B, public C
class Concrete1: public AB
class Concrete2: public AC
class Concrete3: public AC
class Concrete4: public AC, public AB, public ABC
Есть ли хорошая альтернатива?
Большое спасибо!