2013-02-25 71 views
0

我不知道爲什麼我的代碼不工作中枚舉,剛開始學習C++,所有的命名空間/頭文件等。無法解析的外部 - 靜態類

我有一個主要功能:

#include "stdafx.h" 
#include "Game.h" 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    Game::Start(); 
    return 0; 
} 

其中調用遊戲內的靜態函數來啓動。

#include "stdafx.h" 
#include "Game.h" 
void Game::Start(void) 
{ 
    _gameState = ShowingMenu; 

    while(IsExiting()) 
    { 
     switch(_gameState) 
     { 
      case ShowingMenu: 
       ShowMenu(); 
       break; 

     } 
    } 
} 

現在無論我用枚舉遊戲狀態(因爲你會從標題看)我得到:

Unresolved external symbol private static enum Game::GameState Game::GameState 

這是Game.h

#pragma once 

class Game { 
public: 
    static void Start(); 
private: 
    static void GameLoop(); 
    static bool IsExiting(); 
    static void ShowMenu(); 
    enum GameState { Uninitialized, ShowingMenu, Dealing, DealerTurn, PlayerTurn, Betting, Exiting }; 
    static GameState _gameState; 
}; 

不知道爲什麼這不工作,唯一的解決辦法是拿出整個枚舉。

回答

0

確保你在一個翻譯單元(內Game.cpp可能)定義_gameState

Game::GameState Game::_gameState; 

在類定義的static GameState _gameState;只是一個聲明,因此成員必須是太確定。有關更多詳細信息,請參見C++ FAQ

+0

嗯..通常定義在哪裏?功能之前或之後? – user2011736 2013-02-25 19:38:18

+0

@ user2011736它往往是以前,但我不認爲有任何理由必須是。 – 2013-02-25 19:39:19

相關問題