我正在尝试创建这个头文件:
#define MqttConfig_h
#include "Arduino.h"
#include <PubSubClient.h> // MQTT client
#include <ESP8266WiFi.h> // ESP8266 Core WiFi Library
#include <Config.h>
class MqttConfig
{
public:
MqttConfig();
void initMQTT();
private:
String _mqttServer;
String _mqttPrefix;
WiFiClient _wifi;
PubSubClient _mqttClient(_wifi); ****** ERROR HERE *******
};
#endif
我已经尝试了各种方法让它工作:
// This seemed logical to me
PubSubClient _mqttClient(WiFiClient{});
// This was an attempt to read the field and pass it back
WiFiClient GetWiFiClient();
PubSubClient _mqttClient(GetWiFiClient());
// This compiles, but does something I don't understand
WiFiClient GetWiFiClient();
PubSubClient _mqttClient(WiFiClient);
在头文件中“链接字段”的正确方法是什么?我会注意到我不关心对 _wifi 对象的引用,我之所以这样做是因为 PubSubClient 对象的构造函数需要它..
最佳答案
通常,您在构造函数中初始化字段:
class MqttConfig
{
public:
MqttConfig();
private:
PubSubClient _mqttClient;
};
// ...
MqttConfig::MqttConfig()
: _mqttClient(WiFiClient{})
{
}
至于你最后的尝试:
// This compiles, but does something I don't understand
WiFiClient GetWiFiClient();
PubSubClient _mqttClient(WiFiClient);
这些是方法声明。
关于c++ - 在 C++ (arduino) 中,我如何使用一个字段来构建另一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123169/