// IG17 2004-05, II17 2005-06 // EjemploPila.cpp // 17-12-2004 // Ejemplo de uso de la clase generica Pila. // Para compilar: g++ EjemploPila.cpp -o EjemploPila // No es necesario generar Pila.o ni enlazarlo. Se incluye Pila.cpp. // Esto no es un test para comprobar que todo funciona correctamente. // solo ilustra como se puede hacer uso de la clase. #include using namespace std; #include "Pila.cpp" class Avion { // Clase ficticia simplemente para probar que podemos // crear instancias de la clase Pila que guarden objetos de // una clase nuestra. Para ello necesitamos incluir Pila.cpp. float duracionVuelo; int cantidadPasajeros; public: Avion(float, int); friend ostream & operator<<(ostream &, const Avion &) ; }; Avion::Avion(float d, int c) : duracionVuelo(d), cantidadPasajeros(c) { } ostream & operator<< (ostream &os, const Avion &a) { os << "(" << a.cantidadPasajeros << "," << a.duracionVuelo << ")"; return os; } int main () { Pila p; p.Ver(); p.Apilar(Avion(5.5, 500)); p.Apilar(Avion(7.7, 700)); p.Apilar(Avion(3.3, 300)); p.Apilar(Avion(2.2, 200)); p.Apilar(Avion(9.9, 900)); p.Ver(); p.Desapilar(); p.Desapilar(); p.Ver(); if (p.EstaVacia()) cout << "Esta vacia." << endl; else cout << "No esta vacia." << endl; cout << "Talla: " << p.Talla() << endl; cout << "Tope: " << p.Tope() << endl; p.Tope() = Avion(11.11,1100); cout << "Tope cambiado: " << p.Tope() << endl; p.Ver(); p.Vaciar(); p.Ver(); if (p.EstaVacia()) cout << "Esta vacia." << endl; else cout << "No esta vacia." << endl; cout << "CONSTRUCTOR DE COPIA:" << endl; p.Apilar(Avion(5.5, 500)); p.Apilar(Avion(7.7, 700)); p.Apilar(Avion(3.3, 300)); Pila p2(p); p.Ver(); p2.Ver(); p.Vaciar(); p2.Apilar(Avion(88.8, 8800)); p.Ver(); p2.Ver(); cout << "ASIGNACION:" << endl; p = p2; p.Ver(); p2.Ver(); cout << "EXCEPCIONES:" << endl; p.Vaciar(); try { p.Tope(); // Esto va a lanzar una excepcion por estar p vacia cout << "Este mensaje no va a salir nunca" << endl; } catch (int) { cout << "Error capturado." << endl; } cout << "FIN." << endl; p.Tope(); // Esto va a lanzar una excepcion por estar p vacia // Al no capturarla, el programa abortara. cout << "Este mensaje tampoco va a salir nunca" << endl; }