【问题标题】:What's wrong with my C++ temperature convertor?我的 C++ 温度转换有什么问题?
【发布时间】:2014-06-21 18:44:09
【问题描述】:

我正在尝试编写一个程序,该程序采用华氏刻度值,验证该值以确保它是合法的,并返回华氏、摄氏和牛顿的正确值。

下面的代码不断为第 21、25、29 行(空位)提供错误消息

#include <iostream>
using namespace std;

class temperature {
public:

double getFahrenheit();
double getCelsius();
double getNewton();

void setFahrenheit();
void setCelsius();
void setNewton();

private:
    double fahrenheit, Celsius;
    double c, f;

};
void freezing.setFahrenheit(){
    f = 32;
    fahrenheit = f;
}
void freezing.setCelsius(){
    c = (5.0/9.0) * ( f - 32);
    celsius = c;
}
void freezing.setNewton(){
n=(33.0/100.0)*c;
newton=n;

double freezing.getFahrenheit(){
    return fahrenheit;
}

double freezing.getCelsius(){
    return Celsius;
}
Double freezing.getNewton(){
Return Newton;
}
int main() {



Temperature freezing(32);
Freezing.setFahrenheit();                                                                         Freezing.setCelsius();
Freezing.setNewton();

cout << "water freezes at " << freezing.getFahrenheit() << " Fahrenheit, " << freezing.getCelsius() << " Celisus, and " << freezing.getNewton() << " Newton" << endl;




return 0;

}

【问题讨论】:

标签: visual-studio-2010 c++11


【解决方案1】:

您需要使用:: 而不是. 而且,您的类被称为temperature 而不是freezing

void temperature::setFahrenheit()

另见this question

还有一些其他错误:

void temperature::setCelsius(){ //and not void freezing.setCelsius
    c = (5.0/9.0) * ( f - 32);
    celsius = c;
}

这里您引用 celsius ,但 temperature 类使用大写 C 定义 Celsius

void freezing.setNewton(){
n=(33.0/100.0)*c;
newton=n;

在这里您使用了nnewton 变量,但是您没有在任何地方定义它们。他们也许应该是您的温度等级的成员。

Double freezing.getNewton(){
    Return Newton;
}

这里有大写字母,没有意义,应该是

double temperature::getNewton(){
     return newton; //you need to make this a member variable of your class too..
}

Temperature freezing(32);

您的 temperature 类有一个小写的 tTemperature 类不存在。 而且没有定义构造函数,所以你不能在那里传递32

Freezing.setFahrenheit();
Freezing.setCelsius();

这两行引用了Freezing,但是你调用了你的变量freezing

【讨论】:

  • @user3238772 使用大写字母也会出现很多错误,例如双倍与双倍,冻结与冻结等等。
  • @user3238772 你没有一个名为freezing的类,它被称为temperature
  • @nos 谢谢,我已经解决了这些问题。现在,每次双倍温度后我都会收到以下错误消息。 “在‘​​{’标记之前不允许有函数定义”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多