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吗?它们是什么?当然,您可以在构造函数中初始化/分配/修改类成员。正如我所说的,您需要将代码简化为一个小示例,以演示出了什么问题。