如何解决引用其他文件中的对象导致未捕获“...”节点 MCU
我在 C++ 中为节点 mcu 提供引用时遇到问题。我用 Platform IO 编译(我也试过 Arduino 但遇到了类似的问题) 我在 .h 中这样组织了我的课程
class mess_server{
private:
public:
int brerechnung_proz(Kalibrierung& kalibrierung,kali_dat& dat);
void server_init(Kalibrierung& kalibrierung,kali_dat& dat);
};
在 .cpp 中声明函数
void mess_server::server_init( Kalibrierung& kalibrierung,kali_dat& dat){
...
}
从 main.cpp 中,我像这样调用 Funktion:
...
Mess_server.server_init();
...
当我尝试编译它时,编译器给了我类似的东西:
src/mess_server.cpp: In lambda function:
src/mess_server.cpp:63:32: error: 'kalibrierung' is not captured
dat = kalibrierung.laden();
每次调用“kalibrierung”和/或“dat”时我都会收到这些错误
我做错了什么?我没有想法。
您可以在这里找到完整的代码:https://github.com/RubiRubsn/Bewaesserungs_Anlage/tree/main/Bewasserungs%20Anlage%20v2/src
解决方法
抱歉,我自己有点漏掉了错误。
问题是您在这里使用了一个 lambda 函数,而您的变量在 lambda 函数中是未知的,除非您引用它。
server.on("/Kali_nass",HTTP_GET,[](AsyncWebServerRequest *request){
dat = kalibrierung.laden(); // not captured inside the lambda
...
});
见Capture variable inside lambda
所以你可以做这样的事情
server.on("/Kali_nass",[&kalibrierung](AsyncWebServerRequest *request){
dat = kalibrierung.laden(); // captured inside the lambda
});
或者您可以捕获 lambda 中的所有变量。但我不确定是否可以覆盖您的 dat 变量 her。
server.on("/Kali_nass",[&](AsyncWebServerRequest *request){
dat = kalibrierung.laden(); // captured inside the lambda
});
有关 lambda 的更多信息,您可以查看 documentation
附言
对于 Stackoverflow 的未来问题,重现错误所需的任何代码都应该直接在问题中可见,而不是通过 GitHub ;)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。