0

我有GameSettings类。

游戏设置.hpp

class GameSettings
{
public:
    GameSettings();

    GameSettings loadSettings();
    void saveSettings(GameSettings const & GS);

    sf::VideoMode getVideoMode() const {return VMode;}
    bool isFullscreen() const {return fullscreen;}

private:
    sf::VideoMode VMode;
    bool fullscreen;

};

一个GameSettings包含在Game类中(Game 类是Monostate):

游戏.hpp

class Game
{
public:
    Game() {};

    static void init();
    static void run();
    static void clean();
private:
    static sf::Window window;
    static GameSettings currentGS;  
};

下面是 init 函数的实现(目前只在 Game 类中实现了函数):

游戏.cpp

void Game::init()
{
currentGS.loadSettings();
sf::Uint32 style = currentGS.isFullscreen() ? sf::Style::Fullscreen : sf::Style::None | sf::Style::Close;
window.create(currentGS.getVideoMode(), "Name", style);

}

我收到这些错误:

游戏.hpp

(两次)错误 C2146:语法错误:缺少 ';' 在标识符“currentGS”之前 -第 15 行

(两次)错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int -第 15 行

第 15 行static GameSettings currentGS;

游戏.cpp

错误 C2065:'currentGS':未声明的标识符 -第 7、8、9 行

错误 C2228:“.loadSettings”左侧必须有类/结构/联合 -第 7、8、9 行

这些只是初始化函数的行^

4

2 回答 2

1

您的代码示例不完整。您是否包含要使用的类的标题?当您看到如下错误时:

error C2065: 'currentGS' : undeclared identifier

或者

error C2228: left of '.loadSettings' must have class/struct/union

这意味着此时这些变量或类型(identifier)是未知的——一个常见的原因是您没有包含声明标识符的头文件。确保您实际上包含了声明变量和类型的头文件。

于 2013-07-19T02:03:17.850 回答
1

你放const错地方了

更新:

void saveSettings(GameSettings & const GS);
                                 ^^^^^

至:

void saveSettings(GameSettings const & GS);
                               ^^^^^                 
于 2013-07-06T12:23:55.403 回答