gpt4 book ai didi

c++ - 在 C++ 中定义枚举类型的静态变量

转载 作者:行者123 更新时间:2023-11-30 00:56:06 25 4
gpt4 key购买 nike

class Game
{
public:
static void Start();

private:
static bool IsExiting();
static void GameLoop();

static void ShowSplashScreen();
static void ShowMenu();

enum GameState { Uninitialized, ShowingSplash, Paused,
ShowingMenu, Playing, Exiting };

Game::GameState Game::_gameState = Game::Uninitialized;
static sf::RenderWindow _mainWindow;
};
Game::GameState Game::_gameState;
RenderWindow Game::_mainWindow;

错误现在在第一个运行的函数中

void processEvents(){// error: first defined here ???
Event event;
while(App.pollEvent(event)){
if(event.type == Event::Closed)
App.close();
}
}

还有其他的错误,比如在函数中多次定义了 `Game::_gameState',它在 Game 类中声明的其他函数中给出了相同的错误

void Game::Start(void) { // multiple definition of `Game::_gameState'
if (_gameState != Uninitialized)
return;

_mainWindow.create(VideoMode(1200, 900, 32), "Game",
Style::Close);
_gameState = Game::ShowingSplash;

while (!IsExiting()) {
GameLoop();
}

_mainWindow.close();
}

我修正了错误,但又出现了一个错误

while (!IsExiting()) {  //undefined reference to Game::IsExiting
GameLoop();
}

_mainWindow.close();

我不知道它是静态 bool 函数其他函数工作正常但是这个是 bool 并且给我错误

最佳答案

GameState 枚举在 Game 类的范围内声明。因此,当您在该类的范围之外引用它时,您必须使用完全限定的类型名称(这包括定义 _gameState 字段的实例。我还建议您给它一些初始值。例如:

Game::GameState Game::_gameState = Game::Uninitialized;

希望对您有所帮助!

关于c++ - 在 C++ 中定义枚举类型的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10951050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com