C++ 需要代码方面的帮助,以便代码返回并显示;菜单“;

C++ 需要代码方面的帮助,以便代码返回并显示;菜单“;,c++,c++11,default-constructor,C++,C++11,Default Constructor,我正在制作一个小项目,使用变量和类: 当我使用默认构造函数更改变量时,它们的值不会更改 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 degree

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

当我使用默认构造函数更改变量时,它们的值不会更改

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;      
    }
}
water::water()
{       

cout在您的
main
函数中,您创建了一个名为
w1
water
对象。当您在该对象上调用函数(例如
add_ph
add_temp
)时,您可以调用
water()
同样,这不会重建
w1
对象:您正在创建一个新的
water
对象,构建它,然后它会立即被破坏。您可以通过在
water::water
water:~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;
}

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

在此处显示部分代码,并进一步解释问题您在case语句中调用的每个函数都会创建一个未命名的临时
water
实例。这就是您认为更改不会改变变量的原因吗?如果不是,请减少代码。我相信你可以删除90%的链接,并能够重现问题。有可能,在这样做的同时,你会意识到问题是什么。除了这里不鼓励链接到代码之外,要想找出问题是什么,代码太多了。请试着创建一个链接并发布它。你的意思是说我不能在默认构造函数中修改它们?我应该将函数调用移到main吗?它们是什么?当然,您可以在构造函数中初始化/分配/修改类成员。正如我所说的,您需要将代码简化为一个小示例,以演示出了什么问题。