我已经实现了像 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/