Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/11/2010, 10:44
marikiki5
Usuario no validado
 
Fecha de Ingreso: diciembre-2006
Mensajes: 6
Antigüedad: 17 años, 5 meses
Puntos: 0
Pregunta Dudas con referencias, punteros y clases

Hola a todos, a ver si alguien me puede echar un cable con una práctica.

Os comento un poco mi duda: Tengo que implementar una clase Grupo que es un manejador de otra clase Clientes que ya tengo creada en una librería estática funcionando perfectamente y linkada a este nuevo proyecto.

Este es el código del main:

Código c++:
Ver original
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. #include "..\LibCliente\Fecha.hpp" //definicion de la clase Fecha
  5. #include "..\LibCliente\Cliente.hpp" // definicion de la clase Cliente
  6. #include "..\LibCliente\ClienteInternet.hpp" // definicion de la clase ClienteInternet
  7. #include "..\LibCliente\ClienteMovil.hpp" // definicion de la clase ClienteMovil
  8.  
  9. #include "Grupo.hpp" // definicion de la clase Grupo
  10.  
  11. using namespace std;
  12.  
  13. int main(int argc, char *argv[])
  14. {
  15.   Fecha f1, f2(29,2,2001), f3(29,13,2004);
  16.   cout << "Fechas: "<< f1.cadena() << ", " << f2.cadena() << ", " << f3.cadena() << endl;
  17.  
  18.   cout << "Numero de clientes que hay: " << Cliente::obtenerCuenta() << endl;
  19.  
  20.   ClienteInternet juan("Juan", "Perez", Fecha(2,2,2009),0.05, 2100, 25);
  21.   ClienteMovil pepe("Pepe", "Lopez", f2, 0.12, 78.30);
  22.   ClienteInternet ana("Ana", "Feria", f1, 0.07, 2100, 25);
  23.   ClienteMovil felipe("Felipe", "Reyes", Fecha(2,2,1972), 0.12, 8.30);
  24.  
  25.   cout << "Numero de clientes existentes: " << Cliente::obtenerCuenta() << endl;
  26.  
  27.   //Codigo Prueba 1) La clase Grupo
  28.   Grupo f(3), b(3), c(0);
  29.   b.alta(&luis);
  30.   b.alta(&pepe);
  31.   b.alta(&felipe);
  32.   b.alta(&pepe); //no lo debe agregar al existir ya en el grupo

Como podeis ver en las lineas 29,30,31,32, tengo que implementar la funcion alta en la clase grupo y pasa como parámetro la referencia de un cliente.

Código c++:
Ver original
  1. #ifndef GRUPO_HPP
  2. #define GRUPO_HPP
  3.  
  4. class Grupo{
  5.     private:    
  6.         Cliente **lista;
  7.         int nmax;
  8.     public:
  9.         Grupo::Grupo(int n){
  10.             nmax=n;
  11.             lista = new Cliente*[nmax];  //asignacion dinamica de memoria.
  12.             for(int i=0;i<=nmax;i++) //recorrer array e inicializarlo a NULL.
  13.                 lista[i]=NULL;
  14.         }
  15.         void alta(Cliente *c);
  16.         ~Grupo(); //destructor
  17. };
  18. #endif

Código c++:
Ver original
  1. #include "Grupo.hpp"
  2.    
  3.    void Grupo::alta(Cliente *c){    
  4.         for(int i=0; i<nmax; i++){
  5.             if(lista[i].getNombre()== ¿? )
  6.                 cout << "Ese cliente ya existe";
  7.              else
  8.                 //Añadirlo a la lista.
  9.          }
  10.     }

Mi primera pregunta es, ¿tengo bien definida la funcion alta? Si me pasan por referencia un cliente, al definir la funcion alta seria así "void Grupo::alta(Cliente *c)" ?

Otra pregunta es que tengo que comprobar que no exista ese cliente en mi lista. Pero... ¿Cómo lo haría?
Aclaro que la funcion getNombre está ya implementada en la clase cliente y me devuelve el nombre del cliente. Lo que no se es como compararlo con ese cliente que me pasan por referencia.


Espero no haberos liado mucho. Si queréis más datos pedídmelos.

Muchas gracias.