Test Foro de elhacker.net SMF 2.1

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 (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>
//by trioper
using namespace std;

string usr;
int menu;
int input;

void titulo();

class datos {
 private:
   int saldo;
 public:
   datos() {
     cout<<" Usuario:";
     getline(cin,usr);
     cout<<"\n Usuario creado..."<<endl;
   }
   void meter(int a) {
     saldo = a;
   }
   int mostrar() {
     return saldo;
   }
};

int main()
{
 titulo();
 datos objeto;
 titulo();
 cout<<" Saldo: ";
 objeto.mostrar();
 cout<<"\n\n 1) Meter"<<endl;
 cout<<" 2) Salir"<<endl;
 cout<<" Opcion: ";
 cin>>menu;
 titulo();
 if(menu == 1)
 {
   cout<<endl<<" Cantidad a meter: ";
   cin>>input;
   objeto.meter(input);
   main();
 }
 else if(menu == 2)
 {
   system("clear");
   exit(0);
 }
 else
 {
   main();
 }
}

void titulo()
{
 system("clear");
 cout<<" -Saldo usuario-"<<endl<<endl;
}


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 (cpp) [Seleccionar]
objeto.mostrar();

Código (cpp) [Seleccionar]
int mostrar() {
      return saldo;
}


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 (cpp) [Seleccionar]
int main()
{
  titulo();
  datos objeto;
  objeto.mostrar(); //pongo el objeto en main
  titulo();
  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 (cpp) [Seleccionar]
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