Ver Mensaje Individual
  #5 (permalink)  
Antiguo 02/12/2011, 08:29
nh2006
 
Fecha de Ingreso: diciembre-2006
Mensajes: 213
Antigüedad: 17 años, 4 meses
Puntos: 3
Respuesta: cómo listar stl de punteros

Muchas gracias por tus aportes, funcionó, disculpa mi insistencia pero se me ocurrió dividir el código en funciones, pero no logro ver nada. Lo tengo así:

Código C++:
Ver original
  1. #include <list>
  2. #include <iostream>
  3. #include <string.h>
  4. using namespace std;
  5.  
  6. class Persona {
  7. public:
  8.  
  9.     Persona(char *n) {
  10.         strcpy(nombre, n);
  11.     }
  12.  
  13.     virtual void VerNombre() {
  14.         cout << nombre << endl;
  15.     }
  16.  
  17.     virtual void VerApellido() {
  18.     }
  19. protected:
  20.     char nombre[30];
  21. };
  22.  
  23. class Empleado : public Persona {
  24. public:
  25.  
  26.     Empleado(char *n) : Persona(n) {
  27.     }
  28.  
  29.     void VerNombre() {
  30.         cout << "Emp: " << nombre << endl;
  31.     }
  32. };
  33.  
  34. class Estudiante : public Persona {
  35. public:
  36.  
  37.     Estudiante(char *n) : Persona(n) {
  38.     }
  39.  
  40.     void VerNombre() {
  41.         cout << "Est: " << nombre << endl;
  42.     }
  43.  
  44.     void VerApellido() {
  45.         cout << "Este es mi apellido " << endl;
  46.     }
  47. };
  48.  
  49. void listar(list <Persona *> lst);
  50. void cargar(list <Persona *> lst);
  51. /*
  52.  *
  53.  */
  54. int main(int argc, char** argv) {
  55.     list <Persona *> lstPersona;
  56.     cargar(lstPersona);
  57.     listar(lstPersona);
  58.     return 0;
  59. }
  60. void cargar(list <Persona *> lst) {
  61.     Persona *Pepito = new Estudiante("Jose");
  62.     Persona *Carlos = new Empleado("Carlos");
  63.  
  64.     lst.push_back(Pepito);
  65.     lst.push_back(Carlos);
  66. }
  67. void listar(list <Persona *> lst) {
  68.     list <Persona *>::iterator it;
  69.     for (it = lst.begin(); it != lst.end(); it++) {
  70.         (*it)->VerNombre();
  71.     }
  72. }

Siguiendo la misma lógica del método listar, intenté hacerlo así:

(*lst)->push_back(Pepito); me generó error

¿Me puedes indicar qué es lo que estoy haciendo mal?