【发布时间】:2021-12-04 02:55:13
【问题描述】:
操作系统:Windows 10 x64
构建工具:Visual Studio 2021
语言标准:C++20
paho-mqttpp3:1.2.0
包管理器:vcpkg
我正在尝试使用 paho-mqttpp3 版本 1.2.0 构建一个 mqtt::async_client
我正在为我的 MQTT 客户端使用 Meyers 的 Singleton 实现。参考 :
https://stackoverflow.com/a/17713799/6319901
我收到以下错误
错误 C2280 'MqttClient::MqttClient(void)': 试图引用一个 删除功能
在线static MqttClient instance;
当我将鼠标悬停在实例(对象)上时,工具提示会显示以下错误。
Error (active) E1790 “MqttClient”的默认构造函数不能 引用——是一个被删除的函数
来源:
MqttClient& MqttClient::get_instance(void)
{
static MqttClient instance;
return instance;
}
标题:
class MqttClient : public virtual mqtt::callback
{
private:
mqtt::async_client client;
void connected(const std::string& cause) override;
void connection_lost(const std::string& cause) override;
void delivery_complete(mqtt::delivery_token_ptr tok) override;
void message_arrived(mqtt::const_message_ptr msg) override;
MqttClient() = default;
~MqttClient() = default;
public:
static MqttClient& get_instance(void);
MqttClient(const MqttClient& obj) = delete;
MqttClient(MqttClient&& obj) = delete;
MqttClient& operator=(const MqttClient& obj) = delete;
MqttClient& operator=(MqttClient&& obj) = delete;
};
【问题讨论】:
-
我的猜测是,要么你没有覆盖所有 mqtt::callback 的虚函数(我对 mqtt 一无所知),要么不能默认构造 mqtt::async_client。
标签: c++