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