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#include <list>
#include <iostream>
#include <string.h>
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);
void cargar(list <Persona *> lst);
/*
*
*/
int main(int argc, char** argv) {
list <Persona *> lstPersona;
cargar(lstPersona);
listar(lstPersona);
return 0;
}
void cargar(list <Persona *> lst) {
Persona *Pepito = new Estudiante("Jose");
Persona *Carlos = new Empleado("Carlos");
lst.push_back(Pepito);
lst.push_back(Carlos);
}
void listar(list <Persona *> lst) {
list <Persona *>::iterator it;
for (it = lst.begin(); it != lst.end(); it++) {
(*it)->VerNombre();
}
}
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?