Tengo un problema de implementación. Mi estructura de clases es maso asi:
Código:
class A {};
class B: public A {};
class C: public A {};
class Holder {
list<A *> Alist;
};
Las entidades B y C tiene la funcionalidad común implementada en A. Pero B y C agregan métodos específicos a ellas. El problema es que tengo clientes de Holder que tratan objetos tipo B y otros que tratan objetos tipo C.
Se me ocurrieron diferentes soluciones:
- Funcion virtual en A llamada kind() que devuelve un enumerate.
- Visitores
- dynamic_cast
De las tres no me convence ninguna. Existen otras soluciones posibles? Tendré que cambiar mi estructura de datos?