c++ - 引用其他文件中的对象导致“...”未被捕获(节点 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
...
});
所以你可以做这样的事情
server.on("/Kali_nass", HTTP_GET, [&kalibrierung](AsyncWebServerRequest *request){
dat = kalibrierung.laden(); // captured inside the lambda
});
或者您可以捕获 lambda 中的所有变量。但我不确定是否可以覆盖你的 dat 变量。
server.on("/Kali_nass", HTTP_GET, [&](AsyncWebServerRequest *request){
dat = kalibrierung.laden(); // captured inside the lambda
});
有关 lambda 的更多信息,您可以查看文档
附言
对于 Stackoverflow 上的未来问题,重现错误所需的任何代码都应该在问题中直接可见,而不是通过 GitHub ;)
推荐阅读
- c++ - 从模板派生类重载基类虚函数
- javascript - 将边距应用于具有固定位置的背景图像
- sql - 为每个插入的行单独的 ON CONFLICT
- c# - NLog,.net 核心:如何通过依赖注入访问我的服务中的特定记录器
- c# - 此代码不适用于计算我的数据库特定列中所有数据的总数,我不明白为什么
- json - 将 jq 可执行文件添加到 env 变量后出现“ bash: jq: command not found”(windows)
- c - 无法使用 c 编程写入现有文本文件
- sql - 使用另一个具有虚拟机的 Google 云 (gcp) 帐户从 Google 云 (gcp) 帐户访问 Postgres SQL Server
- sql - 如何使用 SQL Query 将系统日期转换为 YYYYMM 格式?
- servicestack - ServiceStack (5.5.0) - 当测试 ServiceStackController 网关为空并抛出异常时