循环返回多个值
在我的程序中,我尝试在“Durchfluss”方法中执行操作后返回两个值。然后这些值应该显示在循环中。但是当我显示它们时,f_ml1 为 0,f_ml 为 170。为什么变量 f_ml1 的结果是 0?错误在哪里?该方法一直在循环中调用。
class Sensor {
float _flowRateTrinkwasser;
unsigned int _f_ml;
unsigned long _wasserMengeTrinkwasser;
float _flowRateReinwasser;
unsigned int _f_ml1;
unsigned long _wasserMengeReinwasser;
public:
Sensor( float flowRateTrinkwasser, unsigned int f_ml, unsigned long wasserMengeTrinkwasser, float flowRateReinwasser, unsigned int f_ml1, unsigned long wasserMengeReinwasser) { // Konstruktor
_flowRateTrinkwasser = flowRateTrinkwasser;
_f_ml = f_ml;
_wasserMengeTrinkwasser = wasserMengeTrinkwasser;
_flowRateReinwasser = flowRateReinwasser;
_f_ml1 = f_ml1;
_wasserMengeReinwasser = wasserMengeReinwasser;
}
Durchfluss() {
_flowRateTrinkwasser = 120; // Formel zur Berechnung von Flow Rate
_wasserMengeTrinkwasser = 50;
_f_ml = _flowRateTrinkwasser + _wasserMengeTrinkwasser ;
_flowRateReinwasser = 70;
_wasserMengeReinwasser = 40;
_f_ml1 = _flowRateReinwasser + _wasserMengeReinwasser;
return (_f_ml1, _f_ml);
}
};
#include "test.h"
//Durchflussmessung Variable Trinkwasser//
float flowRateTrinkwasser;
unsigned int f_ml;
unsigned long wasserMengeTrinkwasser;
//Durchflussmessung Variable Trinkwasser//
//Durchflussmessung Variable Reinwasser//
float flowRateReinwasser;
unsigned int f_ml1;
unsigned long wasserMengeReinwasser;
//Durchflussmessung Variable Reinwasser//
Sensor sensorOne( flowRateTrinkwasser, f_ml, wasserMengeTrinkwasser, flowRateReinwasser, f_ml1, wasserMengeReinwasser ); // Objekt vom Konstruktor Sensor1
void setup() {
Serial.begin(9600);
}
void loop() {
(f_ml1, f_ml) = sensorOne.Durchfluss();
Serial.println(f_ml1);
Serial.println(f_ml);
delay(1000);
}
In my program I try to return two values after performing operations in the "Durchfluss" method. These values should then be displayed in the loop. but when I display them I get 0 for f_ml1 and 170 for f_ml. why do I get 0 for the variable f_ml1? where is the error? This Method has been calling in a loop.
class Sensor {
float _flowRateTrinkwasser;
unsigned int _f_ml;
unsigned long _wasserMengeTrinkwasser;
float _flowRateReinwasser;
unsigned int _f_ml1;
unsigned long _wasserMengeReinwasser;
public:
Sensor( float flowRateTrinkwasser, unsigned int f_ml, unsigned long wasserMengeTrinkwasser, float flowRateReinwasser, unsigned int f_ml1, unsigned long wasserMengeReinwasser) { // Konstruktor
_flowRateTrinkwasser = flowRateTrinkwasser;
_f_ml = f_ml;
_wasserMengeTrinkwasser = wasserMengeTrinkwasser;
_flowRateReinwasser = flowRateReinwasser;
_f_ml1 = f_ml1;
_wasserMengeReinwasser = wasserMengeReinwasser;
}
Durchfluss() {
_flowRateTrinkwasser = 120; // Formel zur Berechnung von Flow Rate
_wasserMengeTrinkwasser = 50;
_f_ml = _flowRateTrinkwasser + _wasserMengeTrinkwasser ;
_flowRateReinwasser = 70;
_wasserMengeReinwasser = 40;
_f_ml1 = _flowRateReinwasser + _wasserMengeReinwasser;
return (_f_ml1, _f_ml);
}
};
#include "test.h"
//Durchflussmessung Variable Trinkwasser//
float flowRateTrinkwasser;
unsigned int f_ml;
unsigned long wasserMengeTrinkwasser;
//Durchflussmessung Variable Trinkwasser//
//Durchflussmessung Variable Reinwasser//
float flowRateReinwasser;
unsigned int f_ml1;
unsigned long wasserMengeReinwasser;
//Durchflussmessung Variable Reinwasser//
Sensor sensorOne( flowRateTrinkwasser, f_ml, wasserMengeTrinkwasser, flowRateReinwasser, f_ml1, wasserMengeReinwasser ); // Objekt vom Konstruktor Sensor1
void setup() {
Serial.begin(9600);
}
void loop() {
(f_ml1, f_ml) = sensorOne.Durchfluss();
Serial.println(f_ml1);
Serial.println(f_ml);
delay(1000);
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
坦率地说,我会添加一对 getter< /a> 方法并直接从传感器对象读取 f_ml1 和 f_ml:
Frankly, I would add a pair of getter methods and read f_ml1 and f_ml directly from your sensor object:
您需要声明 Durchfluss() 应该返回什么类型,并正确初始化该返回值。
示例:
我建议删除全局变量
f_ml1
和f_ml
并在loop()
中声明它们。然后在
loop()
中,如果您启用了 C++17,则可以使用结构化绑定来绑定f_ml1
和f_ml 到返回的 dfret
成员变量:如果您尚未启用 C++17:
You need to declare what type
Durchfluss()
is supposed to return and initialize that return value properly.Example:
I recommend removing the global variables
f_ml1
andf_ml
and declare them inloop()
.Then in
loop()
if you've enabled C++17 you can use structured bindings to bindf_ml1
andf_ml
to the returneddfret
s member variables:If you haven't enabled C++17: