Diferenciar objetos

Iniciado por Ivanchuk, 29 Septiembre 2010, 19:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Ivanchuk

Buenas,
Tengo un problema de implementación. Mi estructura de clases es maso asi:
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?
Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org