0
我试图做一个单身用gccC++单,stackoverflows例如不工作
我发现计算器几个例子,遗憾的是他们没有为我工作。
这里是我的.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说:
include\GlobalInfo.h|12|error: 'GlobalInfo::GlobalInfo(const GlobalInfo&)' is private|
如果我删除
GlobalInfo(GlobalInfo const&);
GlobalInfo& operator=(GlobalInfo const&);
从头,我得到的单身人士,这是不好的在这种情况下的实际副本,因为我使用isFullScreen根据用户输入信息。
[我确定你知道你在做什么,我只是觉得我会指出单身人士是一个非常有争议的设计模式。如果你在SO或互联网上搜索,你会发现很多讨论。] –
是的,我知道,但我读了不少聪明人使用单身人士的书。我不确定为什么争议设计应该意味着“不要使用它”,所有事情都在互联网上引起争议。我需要一个全局范围来访问我游戏中任何地方的一些东西(因此名为GlobalInfo)。作为一个长期的C程序员(> 20年),但相对较新的C + +我不知道什么更好的方式来实现这一点,然后通过单身。使用'extern bool isFullScreen'的C方式肯定更糟糕。 – Hellagot