c++单例,stackoverflows的例子不工作
c++ singleton, stackoverflows example does not work
我正在尝试用gcc制作一个单例
我在stackoverflow上找到了几个例子,不幸的是它们不适合我。
这是我的。h文件:
#ifndef GLOBALINFO_H
#define GLOBALINFO_H
#include <string>
#include <iostream>
using namespace std;
class GlobalInfo
{
private:
GlobalInfo();
GlobalInfo(GlobalInfo const&);
GlobalInfo& operator=(GlobalInfo const&);
public:
static GlobalInfo& GetInstance();
virtual ~GlobalInfo();
bool isFullScreen;
int screenWidth;
int screenHeight;
string title;
protected:
};
#endif // GLOBALINFO_H
这是我的。cpp:
#include "GlobalInfo.h"
GlobalInfo::GlobalInfo()
{
isFullScreen = false;
screenWidth = 800;
screenHeight = 600;
cout << "creating GlobalInfo" << endl;
}
GlobalInfo::~GlobalInfo()
{
}
GlobalInfo &GlobalInfo::GetInstance() {
static GlobalInfo instance;
return instance;
}
GNU C说:
includeGlobalInfo.h|12|error: 'GlobalInfo::GlobalInfo(const GlobalInfo&)' is private|
如果我删除
GlobalInfo(GlobalInfo const&);
GlobalInfo& operator=(GlobalInfo const&);
从头,我得到一个实际的副本的单例,这是不好的在这种情况下,因为我使用isFullScreen保存信息取决于用户输入。
如何实际使用单例类?当你试图调用复制构造函数时,你应该得到一个编译错误,因为获得单例实例的唯一方法应该是通过GetInstance。也许您忘记在调用代码中使用引用:
GlobalInfo& gi = GlobalInfo::GetInstance();
如果你忘了&操作符,您将有效地尝试复制单例,这将正确导致编译错误。
相关文章:
- 为什么在单例中,检查类==空?
- C++ 实现模板单例类时出现链接错误
- 在类中存储单例的指针
- C++中的单例实现在调用 getInstance 函数时不会产生相同的类实例
- 具有非默认构造函数的单例类
- 使用 std::call_once 实现类似单例的功能
- 为什么单例使用指针而不是引用?
- 提升单例池release_memory vs purge_memory
- 具有 QObject 继承的单例 - Qt
- 单例类析构函数无法清理 (SDL_Quit) MinGW
- C++单例,不会为此文档加载任何符号
- 使用 CRTP 实现单例
- C++单例模板类使我的程序崩溃
- Linux 中共享库中的单例无法按预期工作
- 为什么单例在这里工作,尽管静态变量被重新初始化为 NULL
- 为什么这个单例类代码工作正常
- 单例示例如何工作
- c++单例,stackoverflows的例子不工作
- c++中的单例工作有多精确
- 两个线程访问单例类 - 无法正常工作