2016-04-24 2 views
-1

Я очень новичок в программировании, у меня этот большой код, но когда я пытаюсь распечатать данные, никогда не печатает строковую переменную, можете ли вы помочь? это только для Я использую «goto» только для практических навыков.String no print C++

#include <iostream> 
    #include <string> 
    #include <cstdlib> 
    using namespace std; 

    class producto 
    { 
    public: 
     int id; 
     string nombre; 
     string descripcion; 
     int precio; 
     void registrar(); 
     void ver(); 
    }; 
    void producto::registrar() 
    { 
     cout << "Codigo:" << endl; 
     cin >> id; 
     cin.ignore(); 
     cout << "Nombre del producto:" << endl; 
     getline(cin, nombre); 
     cout << "Descripcion del producto:" << endl; 
     getline(cin, descripcion); 
     cout << "Precio:" << endl; 
     cin >> precio; 

    } 
    void producto::ver() 
    { 
     cout << "ID del producto:"; 
     cout << id << endl; 
     cout << "Nombre del producto:" << endl; 
     cout << nombre; 
     cout << "Descripcion del producto:"; 
     cout << descripcion<<endl; 
     cout << "Precio:"; 
     cout << "$" << precio << endl; 

    } 
int main() 
{ 
menu1: 
    int menu; 
    producto cosa; 
    cout << "************************" << endl; 
    cout << "1.- Registrar Producto" << endl; 
    cout << "2.- Ver Producto" << endl; 
    cout << "************************" << endl; 
    cin >> menu; 
    cin.ignore(); 
    switch (menu) 
    { 
    case 1: 
     cout << "INGRESE PRODUCTO NUEVO:\nPresione enter para continuar" << endl; 
     cin.ignore(); 
     system("cls"); 
     cosa.registrar(); 
     cin.ignore(); 
     break; 
    case 2: 
     cosa.ver(); 
     cout << "Presione enter para regresar al menu principal." << endl; 
     cin.ignore(); 
     break; 

    } 
    goto menu1; 
    return 0; 
} 

Редактировать Вот ИНТ главный

+0

Какая у вас функция 'main'? –

+0

Не могли бы вы добавить 'main()', где вы используете свой класс? –

+0

Выполнено, спасибо. – 005197503

ответ

0

Использование goto не рекомендуется и считается очень плохая практика, даже для новичка. Если вы начинаете на C++, лучший способ начать - следовать наилучшей практике. goto поддерживается в C/C++ только для обратной совместимости.

Для вашей проблемы попробуйте использовать цикл вместо goto.

int main() 
{ 
    //Condition to show the menu or exit 
    bool bContinue = true; 
    producto cosa; 

    do{ 

     int menu; 
     cout << "************************" << endl; 
     cout << "1.- Registrar Producto" << endl; 
     cout << "2.- Ver Producto" << endl; 
     cout << "3.- Exit" << endl; 
     cout << "************************" << endl; 
     cin >> menu; 
     cin.ignore(); 

     switch (menu) 
     { 
     case 1: 
      cout << "INGRESE PRODUCTO NUEVO:\nPresione enter para continuar" << endl; 
      cin.ignore(); 
      system("cls"); 
      cosa.registrar(); 
      cin.ignore(); 
      break; 
     case 2: 
      cosa.ver(); 
      cout << "Presione enter para regresar al menu principal." << endl; 
      cin.ignore(); 
      break; 
     case 3: 
      bContinue = false; 
      break; 
     } 

    }while(bContinue) 
    return 0; 
} 

Таким образом, проблема будет устранена, и вы узнаете, как это сделать.

+0

Спасибо, я не был циклом, потому что мы не можем использовать их. – 005197503