Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Dudas con referencias, punteros y clases

Estas en el tema de Dudas con referencias, punteros y clases en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/11/2010, 10:44
Usuario no validado
 
Fecha de Ingreso: diciembre-2006
Mensajes: 6
Antigüedad: 17 años, 11 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.
  #2 (permalink)  
Antiguo 26/11/2010, 16:44
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 6 meses
Puntos: 228
Respuesta: Dudas con referencias, punteros y clases

De que forma de devuelve el nombre como string o como char *??

Si es char * tenes que usar la funcion strcmp.
Si lo que devuelve son string tenes que usar directamente el ==

if(lista[i].getNombre()== c->getNombre() )

Etiquetas: clases, punteros, referencias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:51.