未解析的外部 - 静态类中的枚举

时间:2013-02-25 19:33:13

标签: c++ enums linker

我不知道为什么我的代码不起作用,只是开始学习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;

        }
    }
}

现在,无论我使用枚举GameState(正如您将从标题中看到的那样),我得到:

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;
};

不确定为什么这不起作用,唯一的解决办法是取出整个枚举。

1 个答案:

答案 0 :(得分:0)

确保在单个翻译单元中定义_gameState(可能在Game.cpp内):

Game::GameState Game::_gameState;

类定义中的static GameState _gameState;只是一个声明,因此也必须定义成员。有关详细信息,请参阅C++ FAQ