c++ - 在 C++ (arduino) 中,我如何使用一个字段来构建另一个字段

标签 c++ syntax arduino header-files

我正在尝试创建这个头文件:

#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/

相关文章:

c++ - Vulkan Vulkan.hpp 从对象实例中获取对象类型

c++ - 关于在不调用复制构造函数的情况下返回 STL 容器数据成员

Javascript 变量声明,初始化变量用括号括起来

python - 如何使用python获取arduino端口

c++ - Arduino C++ 析构函数?

C++:如何从定义的容器对象中获取迭代器类型

c++ - 多态类中没有隐式复制构造函数?

c++ - 从基类调用最终类构造函数

asp.net - 如何使用 ? : if statements with Razor and inline code blocks

android - 错误 : OSCOKIRQ failed to assert