为什么我的安托因蒸气压计算C++代码无法正常运行?
问题根因
AntParam成员函数的形参名和类的私有成员变量名完全重名,C++中局部作用域变量优先级更高,你写的A = A这类赋值操作实际是把形参值赋给形参本身,完全没有修改类的成员变量。类的A/B/C/Tsat四个成员始终是未初始化的随机值,自然计算结果不会随输入参数变化,也不符合预期。
修复方案
二选一即可:
- 用
this指针明确指向类成员变量
void AntParam(double A, double B, double C, double Tsat){ this->A = A; this->B = B; this->C = C; this->Tsat = Tsat; }
- 修改形参名避免重名(更推荐,可读性更高)
void AntParam(double in_A, double in_B, double in_C, double in_Tsat){ A = in_A; B = in_B; C = in_C; Tsat = in_Tsat; }
效果验证
修复后传入你给出的水的安托因参数和100℃的饱和温度,计算结果应为760torr左右,符合标准大气压下水的沸点饱和蒸气压预期,调整Tsat数值时输出也会同步正常变化。
内容的提问来源于stack exchange,提问作者chenon
相关产品推荐
相关产品推荐

