[RESUELTO]¿Porque no se muestran los datos? (clases)

Iniciado por trioper, 6 Mayo 2017, 20:12 PM

0 Miembros y 1 Visitante están viendo este tema.

trioper

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"

engel lex

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...
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

trioper


           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

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

RevolucionVegana

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!
HAS DICHO ALGO NENAAAAAA?!

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.