我不知道为什么我的代码不起作用,只是开始学习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;
};
不确定为什么这不起作用,唯一的解决办法是取出整个枚举。
答案 0 :(得分:0)
确保在单个翻译单元中定义_gameState
(可能在Game.cpp
内):
Game::GameState Game::_gameState;
类定义中的static GameState _gameState;
只是一个声明,因此也必须定义成员。有关详细信息,请参阅C++ FAQ。