#ifndef ESTUDIANTE_H #define ESTUDIANTE_H #include #include using namespace std; class Estudiante { public: Estudiante(string name) {nombre=name;} virtual string getDescription() const=0; friend ostream & operator<<(ostream & os, const Estudiante & e); string getNombre() const { return nombre;} private: string nombre; }; /* Comentario post-certamen * La sobrecarga pudo no ser friend en la clase pues no accede a datos no públicos; * Si se saca la palabra reservada friend, se entendería como método de la clase, * luego la declaración debe ir fuera de la case, ejemplo más abajo. EL prototipo debe * ir para que los programas que la usen incluyan el .h y así el prototipo, de otra manera * el compilador lanzaría error ante la ausencia de este prototipo. * En lugar de poner friend ostream & operator<<(ostream & os, const Estudiante & e); * en la clase se pudo poner aquí: (eliminado comentarios) **/ // ostream & operator<<(ostream & os, const Estudiante & e); #endif // ESTUDIANTE_H