首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Meyers实现试图引用已删除函数的Singleton (paho-mqttpp3 3库) (mqtt::async_client类)

Meyers实现试图引用已删除函数的Singleton (paho-mqttpp3 3库) (mqtt::async_client类)
EN

Stack Overflow用户
提问于 2021-12-03 18:42:46
回答 1查看 121关注 0票数 0

操作系统: 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“的默认构造函数--它是一个已删除的函数

资料来源:

代码语言:javascript
复制
MqttClient& MqttClient::get_instance(void)
{
     static MqttClient       instance;
     return instance;
}

标题:

代码语言:javascript
复制
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;
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-03 18:55:13

文档中可以看出,mqtt:async_client并不是可默认的,这意味着您必须在MqttClient的构造函数中提供一个初始化程序或一个默认的成员初始化器。如果不这样做,则会导致默认构造函数被删除,尽管您试图对其进行解释。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70219273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档