Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ivanchuk en 29 Septiembre 2010, 19:23 pm



Título: Diferenciar objetos
Publicado por: Ivanchuk en 29 Septiembre 2010, 19:23 pm
Buenas,
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?