操作系统: Windows 10 x64
构建工具: 2021
语言标准: C++20
泛美卫生组织-mqttpp3 3: 1.2.0
包装经理: vcpkg
我正在尝试使用paho-mqttpp3 3版本1.2.0构建一个mqtt::async_client。
我正在为我的MQTT客户端使用Meyers的Singleton实现。参考资料:https://stackoverflow.com/a/17713799/6319901
我收到以下错误
错误C2280 'MqttClient::MqttClient(void)':试图引用已删除的函数
在线static MqttClient instance;
当我在实例(对象)上得到鼠标时,工具提示会显示以下错误。
错误(活动) 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;
};发布于 2021-12-03 18:55:13
从文档中可以看出,mqtt:async_client并不是可默认的,这意味着您必须在MqttClient的构造函数中提供一个初始化程序或一个默认的成员初始化器。如果不这样做,则会导致默认构造函数被删除,尽管您试图对其进行解释。
https://stackoverflow.com/questions/70219273
复制相似问题