c++ - 在单例中使用已删除的复制构造函数

标签 c++ c++11 singleton c++14

我已经实现了像 this 这样的单例模式,有我的代码:

头文件:

class Settings_manager{
public:
    static Settings_manager& get_instance();

    void operator=(Settings_manager const&) =delete;
    Settings_manager(Settings_manager const&) =delete;
...

private:
    Settings_manager();
};

实现:

Settings_manager& Settings_manager::get_instance()
{
    static Settings_manager instance;
    return instance;
}

Settings_manager::Settings_manager()
{
    read_file();
}

当我尝试在 main 中使用 get_instance 函数时,如下所示:

Settings_manager set = Settings_manager::get_instance();

Settings_manager set = std::move(Settings_manager::get_instance());

我明白了

error: use of deleted function 'Settings_manager::Settings_manager(const Settings_manager&)'
 Settings_manager set = Settings_manager::get_instance();

有人可以说出什么问题并解释一下吗?谢谢。

最佳答案

考虑一下您要在这里做什么:

Settings_manager set = Settings_manager::get_instance();

你有你的单例,get_instance(),你正试图复制它?如果您可以...创建其中两个,那会有点破坏单例的目的吗?

您想做个引用:

Settings_manager& set = Settings_manager::get_instance();

这样,set 就是单例实例。不是它的拷贝。

关于c++ - 在单例中使用已删除的复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39934890/

相关文章:

c++ - 没有尾递归的快速排序

c++ - 条件表达式中的常量值

C++ std::vector<int> 问题

c++ - 这种 C++ 单例模式和方法公开是一种好的做法吗?

java - 单例延迟加载模式

java - 这个nullPointerException的原因是什么?

c++ - Qt 设置 QWidget 的默认宽度

c++ - 给定日期和时间,你如何获得大纪元时间?

c++ - 何时使用 std::forward 转发参数?

c++ - 将成员变量复制到字节 vector 中