Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: trioper en 6 Mayo 2017, 20:12 pm



Título: [RESUELTO]¿Porque no se muestran los datos? (clases)
Publicado por: trioper en 6 Mayo 2017, 20:12 pm
Hola a todos, mi problema es que no se muestran los datos en este programa (es el saldo, linea 14 y linea 35) y no se como resolverlo, ya había echo uno antes sin constructor y si que me lo mostraba. Estoy aprendiendo c++. voy por los constructores de las clases y para reforzar lo que aprendo suelo ponerlo en practica pero en este caso nose..
Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. //by trioper
  4. using namespace std;
  5.  
  6. string usr;
  7. int menu;
  8. int input;
  9.  
  10. void titulo();
  11.  
  12. class datos {
  13.  private:
  14.    int saldo;
  15.  public:
  16.    datos() {
  17.      cout<<" Usuario:";
  18.      getline(cin,usr);
  19.      cout<<"\n Usuario creado..."<<endl;
  20.    }
  21.    void meter(int a) {
  22.      saldo = a;
  23.    }
  24.    int mostrar() {
  25.      return saldo;
  26.    }
  27. };
  28.  
  29. int main()
  30. {
  31.  titulo();
  32.  datos objeto;
  33.  titulo();
  34.  cout<<" Saldo: ";
  35.  objeto.mostrar();
  36.  cout<<"\n\n 1) Meter"<<endl;
  37.  cout<<" 2) Salir"<<endl;
  38.  cout<<" Opcion: ";
  39.  cin>>menu;
  40.  titulo();
  41.  if(menu == 1)
  42.  {
  43.    cout<<endl<<" Cantidad a meter: ";
  44.    cin>>input;
  45.    objeto.meter(input);
  46.    main();
  47.  }
  48.  else if(menu == 2)
  49.  {
  50.    system("clear");
  51.    exit(0);
  52.  }
  53.  else
  54.  {
  55.    main();
  56.  }
  57. }
  58.  
  59. void titulo()
  60. {
  61.  system("clear");
  62.  cout<<" -Saldo usuario-"<<endl<<endl;
  63. }
  64.  

Si quereis compilar en windows, cambiad los "clear" por "cls"


Título: Re: ¿Porque no se muestran los datos? (clases)
Publicado por: engel lex en 6 Mayo 2017, 20:19 pm
linea 35
Código
  1. objeto.mostrar();

Código
  1. int mostrar() {
  2.      return saldo;
  3. }

retornaste el saldo, ok... pero no haces nada con el... tendrías que guardarlo en una variable, haerle cout, hacer una cuenta matemática, algo...


Título: Re: ¿Porque no se muestran los datos? (clases)
Publicado por: trioper en 6 Mayo 2017, 20:48 pm

           gracias david tennant XD, al final quedo asi
Código
  1. int main()
  2. {
  3.  titulo();
  4.  datos objeto;
  5.  objeto.mostrar(); //pongo el objeto en main
  6.  titulo();
  7.  cout<<" Saldo: "<<objeto.mostrar()<<endl; //y lo muestro con cout


Título: Re: [RESUELTO]¿Porque no se muestran los datos? (clases)
Publicado por: engel lex en 6 Mayo 2017, 21:22 pm
ningún david! XD 10th doctor! XD

en el ultimo codigo, la linea 5 no es necesaria, no hace nada, realmente el objeto se crea en la 4 y se invoca mostrar en la 6


Título: Re: [RESUELTO]¿Porque no se muestran los datos? (clases)
Publicado por: RevolucionVegana en 7 Mayo 2017, 00:35 am
Buenas una pregunta, en el último código que has pasado (trioper) la línea 4 que dice:
Código
  1. datos objeto;
que hace exactamente? Está creando una instancia llamada "objeto" de la clase datos? Gracias un saludo!


Título: Re: [RESUELTO]¿Porque no se muestran los datos? (clases)
Publicado por: engel lex en 7 Mayo 2017, 00:46 am
si, está creando un objeto de tipo datos

por cierto, viendo el codigo en detalle...

main al ser int debe retornar, usualmente 0

haces el loop llamando a main, eso te puede hacer que el codigo falle al no saber cuantas recursiones caiga...

en 51 haces exit(0), sin embargo con return 0 basta y sería más apropiado

declaras variables globales innecesarias

usas stdlib.h que es una librería de C, la propiada sería cstdlib