Существует абстрактный базовый класс A :
class Generic_A
{
};
От него отнаследованы еще 4 класса:
class Derived_A1 : public Generic_A { ... };
class Derived_A2 : public Generic_A { ... };
class Derived_A3 : public Generic_A { ... };
class Derived_A4 : public Generic_A { ... };
Также существует класс B, который агрегирует в себе объект класса A (а точнее одного из его наследников):
class B
{
Generic_A* a;
};
Но в связи с особенностями предметной области класс B может агрегировать только либо Derived_A1, либо Derived_A2, либо Derived_A3, но не Derived_A4. Также существует класс C:
class C
{
Generic_A* a;
};
Он может агрегировать только либо Derived_A2, либо Derived_A3.
Как лучше смоделировать такую ситуацию?