Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/04/2015, 21:13
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 7 meses
Puntos: 38
Respuesta: ¿Cómo reutilizar una variable?

No te entiendo a que te refieres con lo de reutilizar la variable si lo que quieres es compararlas.
Debes tener claro que no estas creando un constructor si no estas creando un objeto y invocando uno de sus constructores ya sean esos los que trae por defecto o alguno que los haya definido tu.

Un constructor es algo especial que lo que hace es dar valor inicial a las variables a las variables miembro de tu clase, como por ejemplo alocarlas en memoria dinamica, inicializarlas(Lo que sueles hacer con datos simples.) etc etc.

Si quieres un método que compare si la placa del coche B es igual a la del coche A pero quieres que ese método este dentro de la misma clase debes hacer un método(función) miembro que te permita recibir un objeto B y compare con ella misma(A). Pero si la placa esta como privada ademas necesitas una función geter que te de acceso a la parte privada de la función ya que si uso la función miembro del objeto A esa me da acceso a su objeto interno, pero no voy a tener acceso directo al objeto B por que será privado, o sea que si uso el método de A puede hacer Placa == otraPlaca pero la otra placa debería ser una función interna de la clase que me retornaría la placa de la clase B seria más o menos asi: if (Placa == B.otraPlaca()).

Un ejemplo seria:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. using namespace std;
  5.  
  6. class ClaseA {
  7.     private:
  8.         char Color[30];
  9.         char Marca[30];
  10.         int Placa;
  11.        
  12.     public:
  13.         ClaseA ( char *, char *, int );
  14.         int getPlaca()const {return Placa;} //esta seria la funcion otraPlaca pero mejor la llamo getPlaca ya que me va a dar la placa de un determinado objeto.
  15.         void compararMatricula( ClaseA& otroObjeto ){
  16.             if( this->getPlaca() == otroObjeto.getPlaca() ){
  17.                 cout << "La placa recibida por referencia coincide" << endl;
  18.             }else{
  19.                 cout << "La placa recibida por referencia NO coincide" << endl;
  20.             }
  21.         }
  22. };
  23.  
  24. ClaseA::ClaseA ( char *a, char *b, int c ) {
  25.     strcpy ( Color, a );
  26.     strcpy ( Marca, b );
  27.     Placa = c;
  28.    
  29.     cout << "MARCA: " << a << endl << "COLOR: " << b << endl << "PLACA: " << c << endl << endl;
  30.    
  31. }
  32.  
  33.  
  34.  
  35. main() {
  36.     cout << "CONCESIONARIA CARROSBUENOS C.A." << endl;
  37.     cout << endl;
  38.    
  39.     ClaseA A ( "FORKA", "BLANCO", 24343 );
  40.     ClaseA B ( "COROLLA", "ROJO", 24343 );
  41.    
  42.     //Entonces voy usar el metodo comparar del objeto A y le paso el objeto B.
  43.     A.compararMatricula(B);   //"A == B"
  44.    
  45.     //Si uso el metodo compararMatricula de A eso me garantiza que puedo acceder a Placa A, pero
  46.     //la placa B no tiene nada que ver con la placa A por eso necesito la funcion getPlaca del objeto
  47.     //recebido(Por que se trata de otro objeto y no del mismo)
  48.     //¿Que pasaria si hago Placa == Placa? Un poco confuso no cres? No sabria decirte si Placa de la
  49.     //derecha es la A o la derecha es la B XDD. Pero si me refiero a placa se que es la interna, mientras que B.getPlaca() me retorna la placa B.
  50.     //por supuesto podia hacer tambien en la funcion CompararPlacas  algo como
  51.     //if( getPlaca() == otroObjeto.getPlaca() ) o if( this->getPlaca() == otroObjeto.getPlaca() ) que
  52.     //seria decir estaPlaca == otraPlaca, mucho más claro(o no XD).
  53.    
  54.    
  55.     //puedo usar el metodo de b para comparar con a
  56.     B.compararMatricula(A);
  57.    
  58.     //Si quiero usar un if que no pertenece a ninguna de las clases entonces uso el getplaca de ambas
  59.     if (A.getPlaca()==B.getPlaca()){
  60.         cout << "\niguales" << endl;
  61.     }else{
  62.         cout << "\ndiferentes" << endl;
  63.     }
  64.    
  65.    
  66.     getchar();
  67. }