Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/12/2011, 20:43
nh2006
 
Fecha de Ingreso: diciembre-2006
Mensajes: 213
Antigüedad: 18 años
Puntos: 3
cómo listar stl de punteros

Hola amigos,

Tengo una clase base de la cual heredan 2: Clasehija1 y Clasehija2, todos los objetos de las clases hijas los quiero tener en una sola lista.

Cómo puedo hacer esto?

Hasta el momento tengo algo parecido a lo siguiente:
Código C++:
Ver original
  1. list <ClaseBase *> lstClaseBase;
  2. ClaseBase *objCasehija1 = new Clasehija1();
  3. ClaseBase *objCasehija2 = new Clasehija2();

Código C++:
Ver original
  1. lstClaseBase.pushback(objCasehija1);
  2. lstClaseBase.pushback(objCasehija2);

Pero no sé si lo anterior está correcto, además necesito una función para muestre el contenido de lstClaseBase.

Tengo algo como lo siguiente pero no me funciona:
Código C++:
Ver original
  1. void listar(list <ClaseBase *> lst) {    
  2.     list <ClaseBase *>::iterator it;
  3.     for( it = lst.begin(); it != lst.end(); it++ ){
  4.        printf("un elemento");
  5.     }  
  6. }
Y en su invocación tengo esto:
Código C++:
Ver original
  1. listar(lstClaseBase);

Yo esperaría ver el mensaje "un elemento" pero veo nada.

Lo que pretendo hacer es lo que les planteaba al principio: en una sola lista, guardar diferentes objetos los cuales son heredados de una clase (la lista es del tipo de la clase base).

Ojalá me puedan dar una mano con esto.

Gracias desde ya.

Saludos