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

[SOLUCIONADO] ¿Cómo reutilizar una variable?

Estas en el tema de ¿Cómo reutilizar una variable? en el foro de C/C++ en Foros del Web. Hola, antes que nada quiero empezar comentando que estoy inicializándome en este mundo y que aunque sé algunos cosas, otras se me escapan de las ...
  #1 (permalink)  
Antiguo 22/04/2015, 18:57
 
Fecha de Ingreso: abril-2015
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
¿Cómo reutilizar una variable?

Hola, antes que nada quiero empezar comentando que estoy inicializándome en este mundo y que aunque sé algunos cosas, otras se me escapan de las manos y las tiendo a olvidar, en fin... Estoy haciendo un código (mediante constructores) este es de tipo concesionario, que me facilita la información de ciertos coches tales como: Color, marca y placa. Al momento de crear un constructor (estoy practicando esto, los constructores y funciones amigas) que le asigno las variables todo bien, pero ahora quiero hacer un condicional para que me diga qué vehículo tiene el número de placa mayor o algo similar (quería hacerlo por fecha también) pero al momento de utilizar las variables me dicen que no está definidas y no recuerdo alguna forma de reutilizarlas, aquí el código:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <conio>
  3. #include <stdio>
  4.  
  5. class ClaseA
  6. {
  7.     private:
  8.    char Color[30];
  9.    char Marca[30];
  10.    int Placa;
  11.  
  12.    public:
  13.    ClaseA(char *, char *, int);
  14.    void Mostrar();
  15. };
  16.  
  17. ClaseA::ClaseA(char *a, char *b, int c)
  18. {
  19.     strcpy(Color, a);
  20.    strcpy(Marca, b);
  21.    Placa = c;
  22.  
  23.    cout << "MARCA: " << a << endl << "COLOR: " << b << endl << "PLACA: " << c << endl << endl;
  24.  
  25. }
  26.  
  27. void Mostrar()
  28. {
  29.  
  30. }
  31.  
  32. main()
  33. {
  34. cout << "CONCESIONARIA CARROSBUENOS C.A." << endl;
  35. cout << endl;
  36.  
  37. ClaseA A("FORKA","BLANCO", 24343);
  38. ClaseA B("COROLLA","ROJO", 22343);
  39. ClaseA C("FORTUNER","VERDE", 22313);
  40.  
  41. Mostrar();
  42.  
  43. }
  #2 (permalink)  
Antiguo 22/04/2015, 21:13
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 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. }
  #3 (permalink)  
Antiguo 23/04/2015, 07:09
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: ¿Cómo reutilizar una variable?

Hola, creo que vangodp ya te respondió muy bien. Si te queda alguna duda deberías poner el if el cual te falla para ver mejor que está mal.

Etiquetas: char, funcion, int
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 05:41.