我正在努力使其成为这样,如果用户选择1,它应该将温度增加5,而如果用户选择2,它应该降低温度。我遇到的问题是它不能更新温度值。
更新:我终于完成了数学部分,但由于某种原因,当我打印温度值时,它不会保存更新。如果我做得更暖和,它总是在20,如果我做的更凉爽,它总是10。我想我必须使用getTemp((,因为我只编辑局部变量?我该怎么做?
#include <iostream>
using namespace std;
class heater
{
public:
int temperature;
int min;
int max;
int increment;
heater(int min=0, int max=60)
{
increment = 5;
temperature = 15;
}
int warmer(int);
int cooler(int);
int getTemp(int);
};
int heater::warmer(int temperature) {
if (temperature > (temperature - increment))
{
temperature += increment;
return temperature;
}
else cout << "Max temp reached.";
}
int heater::cooler(int temperature) {
if (temperature < (temperature + increment)){
temperature -= increment;
return temperature;
}
else cout << "Min temp reached.";
}
int heater::getTemp(int temperature) {
return temperature;
}
int main()
{
heater w;
heater c;
heater t;
heater g;
int i;
int number;
int temp;
for (i = 1; i != 0; i=1)
{
cout << "n1. Warmer n";
cout << "2. Cooler n";
cout << "Press 0 to exit. n";
cin >> number;
if (number == 1) {
temp = w.warmer(t.temperature);
cout << "The temperature is now: " << temp;
}
else if (number == 2) {
temp = c.cooler(t.temperature);
cout << "The temperature is now: " << temp;
}
else if (number == 0){
break;
}
}
return 0;
}
在名为temperature
的int heater::warmer(int temperature)
参数中,会对名为temperature
的类成员进行阴影处理,并且只能修改该局部参数。
只需删除这些参数并修改您的类成员:
#include <iostream>
using namespace std;
class heater
{
public:
int temperature;
heater()
{
temperature = 15;
}
int warmer();
int cooler();
int getTemp();
};
int heater::warmer() {
temperature -= 5;
}
int heater::cooler() {
temperature += 5;
}
int heater::getTemp() {
return temperature;
}
int main()
{
heater w;
heater c;
heater t;
int number;
cout << "1. Warmer n";
cout << "2. Cooler n";
cin >> number;
if (number == 1) {
w.warmer();
cout << "The temperature is now: " << t.temperature;
}
else if (number == 2) {
c.cooler();
cout << "The temperature is now: " << t.temperature;
}
return 0;
}
此外,行heater getTemp();
没有做任何有用的事情。它声明了一个全局函数,该函数返回heater
并且不接受任何参数。您可能想这样调用成员函数:
cout << "The temperature is now: " << t.getTemp();