0

私はGameSettingsクラスを持っています。

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;

};

1 つの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);

}

そして、私はこれらのエラーが発生しています:

Game.hpp :

(2 回)エラー C2146 : 構文エラー: ';' がありません 識別子 'currentGS' の前 - 15 行目

(2 回)エラー C4430 : 型指定子がありません - int と見なされます。注: C++ は default-int をサポートしていません -行 15

15行目:static GameSettings currentGS;

ゲーム.cpp

エラー C2065 : 'currentGS': 宣言されていない識別子 -行7、8、9

エラー C2228 : '.loadSettings' の左側には class/struct/union が必要です -行7、8、9

これらは init 関数の行のみです ^

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 に答える