// IG17 2004-05 // Empresa.h // 10-12-2004 // Ejemplo del Tema 3b: clase que contiene una lista de datos heterogeneos // (varios tipos de empleados) y en la que se hace uso de la ligadura dinamica. // La lista se ha implementado simplemente con un puntero al primer // nodo e insercion por cabeza. // En esta implementacion, la funcion Insertar recibe un puntero a // Empleado y adquiere la propiedad del objeto apuntado: sera la clase // Empresa quien se encargue de liberar ese objeto, no el usuario de // la clase que lo ha creado. // Se han implementado tambien el destructor, el constructor de copia // y el operador de asignacion de la clase empresa, porque los que // proporciona el compilador por defecto en este caso no son validos. // Las copias de los empleados se crean con un constructor virtual: la // funcion Clonar() [Vease Google: C++ clone "virtual constructors"]. #ifndef _EMPRESA_H #define _EMPRESA_H #include #include "Empleados.h" class Empresa { string nombre; struct Nodo { Empleado *empleado; Nodo *sig; Nodo(Empleado *, Nodo * = NULL); ~Nodo(); } *listaEmpleados; int cantidadEmpleados; public: Empresa (string = ""); void Insertar (Empleado *); void Despedir (string); int CantidadEmpleados() const; void Ver() const; float CalcularSumaSueldos() const; void Vaciar(); ~Empresa(); Empresa(const Empresa &e); Empresa & operator=(const Empresa &e); }; #endif