I am making a program for charging and paying basic services in codeblocks
This is my code:
#include <iostream>
#include <cstdlib>
using namespace std;
class base {
private:
//bienvenido
char nick[30];
//persona
char opcion_persona;
//menu
int key;
int opcion;
//informacion
int keyi;
int opi;
//salir
char opcion_salir;
public:
void bienvenido ();
void persona ();
void menu ();
void informacion();
void salir (); };
void base::bienvenido() {
cout<<"\n\n\t\t\t\t";
cout<<"<:: Sistema de Facturacion DFP ::>";
cout<<"\n\n\t\t\t";
cout<<"> Bienvenido a Digital Fast Payment ";
cout<<"\n\n\t\t\t";
cout<<"< Ingrese un nick: ";
cin.getline(nick, 15, '\n');
cout<<"\n\n\t\t\t"; }
void base::persona() {
while (opcion_persona!='n' && opcion_persona!='j')
{
system ("cls");
cout<<"\n\n\t\t\t\t";
cout<<"<:: Sistema de Facturacion DFP ::>";
cout<<"\n\n\t\t\t";
cout<<"> Hola "<<nick<<" usted es?";
cout<<"\n\n\t\t\t";
cout<<"(n) Persona natural";
cout<<"\n\n\t\t\t";
cout<<"(j) Persona juridica";
cout<<"\n\n\t\t\t";
cout<<"< Ingrese una opcion: ";
cin>>opcion_persona;
if (opcion_persona!='n' && opcion_persona!='j')
{
cout<<"\n\t\t\t";
cout<<"> Ingrese una opcion correcta";
cin.get();
cin.get();
}
} }
void base::menu() {
base principal;
while (key!=1)
{ system("cls");
cout<<"\n\n\t\t\t\t";
cout<<"<:: Sistema de Facturacion DFP ::>";
cout<<"\n\n\t\t\t";
cout<<"> Menu de opciones";
cout<<"\n\n\t\t\t";
cout<<"1 - Informacion";
cout<<"\n\n\t\t\t";
cout<<"2 - Pago de servicios";
cout<<"\n\n\t\t\t";
cout<<"3 - Salir";
cout<<"\n\n\t\t\t";
cout<<"< Elija una opcion "<<nick<<": ";
cin>>opcion;
if (opcion!=1 && opcion!=2 && opcion!=3)
{ key=0;
cout<<"\n\t\t\t";
cout<<"< Elija una opcion de menu";
cin.get();
cin.get(); }
else
key=1;
switch (opcion)
{ case 1:
{
principal.informacion();
key=0;
break;} case 2:
{
key=0;
break;} case 3:
{
principal.salir();
key=0;
break;}
}
}
}
void base::informacion() {
base informacion;
while (keyi!=1) {
system("cls");
cout<<"\n\n\t\t\t\t";
cout<<"<:: Sistema de Facturacion DFP ::>";
cout<<"\n\n\t\t\t";
//Aqui es el problema
cout<<"> Aqui puede consultar los valores de los servicios "<<nick;
cout<<"\n\n\t\t\t";
cout<<"1 - Luz";
cout<<"\n\n\t\t\t";
cout<<"2 - Agua";
cout<<"\n\n\t\t\t";
cout<<"3 - Telefono";
cout<<"\n\n\t\t\t";
cout<<"4 - Internet";
cout<<"\n\n\t\t\t";
cout<<"5 - Tv pagada";
cout<<"\n\n\t\t\t";
cout<<"6 - Atras";
cout<<"\n\n\t\t\t";
cout<<"< Elija una opcion: ";
cin>>opi; if (opi!=1 && opi!=2 && opi!=3 && opi!=4 && opi!=5 && opi!=6) { keyi=0; cout<<"\n\t\t\t"; cout<<"< Elija una opcion de menu"; cin.get(); cin.get(); } else keyi=1; switch (opi) { case 1:
{
keyi=0;
break;} case 2:
{
keyi=0;
break;} case 3:
{
keyi=0;
break;} case 4:
{
keyi=0;
break;} case 5:
{
keyi=0;
break;} case 6:
{
keyi=1;
break;} } } keyi=0; }
void base::salir() {
system("cls");
cout<<"\n\n\t\t\t\t";
cout<<"<:: Sistema de Facturacion DFP ::>";
cout<<"\n\n\t\t\t";
cout<<"> "<<char(168)<<"Desea salir del programa?";
cout<<"\n\n\t\t\t";
cout<<"< 0 para salir o cualquier tecla para regresar: ";
cin>>opcion_salir;
if (opcion_salir=='0')
exit(0); }
int main () {
base cuerpo;
cuerpo.bienvenido();
cuerpo.persona();
cuerpo.menu();
return 0; }
My problem is the variable char nick[30] , when executing the program and reaching the "main.information" object , it is not displayed correctly. How do I fix it?
If you are executing a function of
base
, why are you creating a second object of typebase
?principal
it's a stand-alone object, and what you do to that object won't be reflected in the object you're calling the method onmenu
.An example to see it better
The example shows the problem you have. When you create a new object, it has its own life cycle and its variables are not shared by the containing object. Careful with that.
With this simple change that part should work for you.