[英]Defining static variable of enum type in c++
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();
}
我不知道這是靜態布爾函數,其他函數也能正常工作,但是這是布爾函數,給我錯誤
GameState
枚舉在Game
類的范圍內聲明。 因此,當您在該類的范圍之外引用它時,必須使用完全限定的類型名稱(包括定義_gameState
字段的實例。我還建議您為其提供一些初始值。例如:
Game::GameState Game::_gameState = Game::Uninitialized;
希望能幫助到你!
由於enum GameState
包含在class Game
您需要相應地調整變量的范圍:
Game::GameState Game::_gameState;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.