Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Lists y clases

Estas en el tema de Lists y clases en el foro de C/C++ en Foros del Web. Buenas, Continuo con mi avalancha de dudas y en este momento tratan sobre lists. Al caso: Tengo una clase base, llamemosla Base, y 3 clases ...
  #1 (permalink)  
Antiguo 12/09/2008, 04:02
 
Fecha de Ingreso: agosto-2006
Mensajes: 16
Antigüedad: 17 años, 8 meses
Puntos: 0
Lists y clases

Buenas,

Continuo con mi avalancha de dudas y en este momento tratan sobre lists.
Al caso:

Tengo una clase base, llamemosla Base, y 3 clases derivan de ella (A, B y C), cada una con sus variables y metodos independientes.

En otra clase (Por ejemplo.... Contenedora), defino como publica una lista de clase Base de este modo:
list<Base> wid;

Y mediante un metodo en la clase contenedora voy añadiendo clases derivadas de la clase Base a esa lista (Es decir, voy añadiendo objetos de las clases A, B y C a la lista wid).

Luego recorro todos los elementos de la lista con un list<Base>::iterator en un for. El caso es que a mi me gustaria poder acceder desde este iterator y este for a los metodos y variables propias de los objetos de las clases derivadas que se almacenan en la lista de la clase base.

Un ejemplo para que quede mas clara mi duda, para aquellos que no lo entiendan:
Código:
class Base {
public:
int x, y;
}
class A: public Base {
public:
char *titulo;
}
class B: public Base {
public:
float numero;
}
class C: public Base {
public:
bool ge;
}

class Otra {
public:
list<Base> wids;
void Add(A o) { wids.push_back(o);
void Add(B o) { wids.push_back(o);
void Add(C o) { wids.push_back(o);
}

// Creamos los objetos
Base og;

A a;
B b;
C c;
og.Add(a);
og.Add(b);
og.Add(c);

// Ahora voy recorriendo los elementos uno a uno:
list<Base>::iterator it;
for(it = og.wids.begin(); it != og.wids.end(); it++) {
   // Aqui me gustaria poder acceder a estos miembros
   it->titulo;
   it->numero;
   it->ge;
}
Estube comentando en un chat sobre esto y me haclararon que usando virtual en mi clase base podria arreglarlo, pero no todas las clases derivadas implementarian todas las funciones o variables virtual de la clase base, entonces se quedarian abstractas y no podria crear objetos de esas clases derivadas.

Me gustaria que me dijieran como podria hacer esto, o alguna otra alternativa para hacer eso que necesito.

Un saludo y gracias de antemano
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:19.