我正在使用变量和类制作一个小项目:

http://pastebin.com/NpU6E4e5

当我使用默认构造函数更改变量时,其值不会更改。

water::water()
{
    cout<<"What would you like to do?"<<endl;

    cout<<"0. Get current stats of water"<<endl;
    cout<<"1. Raise water temperature by certain degrees"<<endl;
    cout<<"2. Decrease water temperature by certain degrees"<<endl;

    cin >> do_what;
    cout<<do_what;

    switch(do_what)
    {
        case 0 :check_status();
                break;
        case 1 :heat_water();
                break;
        default:cout<<"Enter proper value!"<<endl;
                //system("cls");
                //water();
                break;
    }
}

这是默认构造函数。它不能更改在其主类class water中声明的变量值

最佳答案

main函数中,您将创建一个名为waterw1对象。当您在THAT对象上调用函数(例如add_phadd_temp)并再次调用water()时,这不会重新构造w1对象:您正在创建一个新的water对象,并对其进行构造然后将其立即销毁。您可以通过在water::waterwater::~water(分别为构造函数和析构函数)中放置一个断点来看到这一点。

如果您尝试修改原始的water对象w1,则应创建一个Reset函数,将功能重置为所需的状态(我假设这是打印控制台内容并再次要求用户输入?)。

您可能还想尝试以下方法:

int main()
{
    // create water object to work with
    water w1;

    char input = 'Q';
    do
    {
        // Ask user for input
        input = AskForInput();
        ProcessInput(input, w1);
        // Process input until the user wishes to quit
    } while (input != 'Q')

    return 0;
}

请注意,此答案基于链接的代码和您的原始问题。

关于c++ - 需要代码方面的帮助,以便它返回并显示 “Menu”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29910519/

10-10 09:35