我访问过这个论坛很多很多次,但这是我在这里的第一篇文章。通常我可以在这里找到我的答案,我想这次我可能已经找到了,但是这次我的知识缺乏理解给出的解决方案(过去两周一直在学习 C++)。
我得到的错误:
没有调用 'WidgetBridge::WidgetBridge()' 的匹配函数
我的(相当冗长的)代码的提取:
class Room {
private:
//initializer list of internal objects
WidgetBridge bridge_thermostat;
WidgetBridge bridge_relay;
public:
//Constructor of the class:
Room() : bridge_thermostat(V100), bridge_relay(V107){}
void initBridges(String authThermostat, String authRelay){
bridge_thermostat.setAuthToken(authThermostat);
bridge_relay.setAuthToken(authRelay);
}
void receiveCurrentT(float param){
currentT = param;
Blynk.virtualWrite(V10, currentT);
timer.restartTimer(thermostatTimer ); //reset isDead timer for thermostat
Blynk.setProperty(V17, "color", BLYNK_GREEN); //change LED color
Blynk.virtualWrite(V17, 200);
}
} livingRoom;
BLYNK_CONNECTED() {
Blynk.syncAll();
livingRoom.initBridges("xxx", "xxxx"); //auth of: thermostat, relay
}
BLYNK_WRITE(V10){ livingRoom.receiveCurrentT(param.asFloat()); } //receive currentT from thermostat
根据我在这个论坛上找到的答案,WidgetBridge 在调用时似乎没有自己的构造函数。根据给出的答案,我也尝试过:
public:
//Constructor of the class:
Room() : {
bridge_thermostat = V100;
bridge_relay = V107;
}
但这带来了同样的错误。我继续阅读有关静态字段、构造函数、命名空间等的内容,但底线是:我被卡住了,我不知道如何解决这个问题。
附加信息:代码用于与其他 esp8266(继电器和恒温器)通信的 esp8266 arduino wifi 模块。通信通过使用Blynk 应用程序中的代码创建的“桥梁”进行。
感谢您的时间!
更新:我终于找到了实际的 calss widgetbridge 本身。从提到的解决方案中,我收集到它本身没有构造函数,但它确实......所以现在我真的迷路了。这是小部件类的一部分:
class WidgetBridge
: private BlynkWidgetBase
{
public:
WidgetBridge(uint8_t vPin)
: BlynkWidgetBase(vPin)
{}
void setAuthToken(const char* token) {
char mem[BLYNK_MAX_SENDBYTES];
BlynkParam cmd(mem, 0, sizeof(mem));
cmd.add(mPin);
cmd.add("i");
cmd.add(token);
Blynk.sendCmd(BLYNK_CMD_BRIDGE, 0, cmd.getBuffer(), cmd.getLength()-1);
}
(....)
};