Hola,
De antemano muchas gracias por la respuesta, tengo otra pregunta, cuando ya tengo todos los objetos en la lista y quiero invocar a un método de esos objetos que son diferentes. ¿Cómo hago eso?. Les dejo un código ya funcionando pero que me da error en la línea it->VerNombre(); que se encuentra en el for en el método listar.
VerNombre es un método que es heredado y se implementa de diferente forma en las clases hijas.
Código C++:
Ver original#include <list>
#include <iostream>
using namespace std;
class Persona {
public:
Persona(char *n) {
}
virtual void VerNombre() {
cout << nombre << endl;
}
virtual void VerApellido(){}
protected:
char nombre[30];
};
class Empleado : public Persona {
public:
Empleado(char *n) : Persona(n) {
}
void VerNombre() {
cout << "Emp: " << nombre << endl;
}
};
class Estudiante : public Persona {
public:
Estudiante(char *n) : Persona(n) {
}
void VerNombre() {
cout << "Est: " << nombre << endl;
}
void VerApellido() {
cout << "Este es mi apellido "<<endl;
}
};
void listar(list <Persona *> lst) ;
/*
*
*/
int main(int argc, char** argv) {
list <Persona *> lstPersona;
Persona *Pepito = new Estudiante("Jose");
Persona *Carlos = new Empleado("Carlos");
lstPersona.push_back(Pepito);
lstPersona.push_back(Carlos);
listar(lstPersona);
return 0;
}
void listar(list <Persona *> lst) {
list <Persona *>::iterator it;
for( it = lst.begin(); it != lst.end(); it++ ){
it->VerNombre();
}
}
Saludos