我有几个编译错误可能正在盯着我,但我似乎无法解决它们。我已经开始检查括号,分号和#includes的解决方案,但没有快乐。这是在使用C ++的VisualStudio 2008中。
错误是;
错误1错误C2653:'Game':不是类或命名空间名称logs.h 34
错误2错误C3861:'SetState':找不到标识符logs.h 34
在logs.h
中找到Game::SetState(2);
完整标题;
# pragma once
#include "DarkGDK.h"
#include "Screen.h"
class LogS:public Screen
{
public:
LogS():Screen()
{
//to be added
}
void SetBgrnd();
void Skip();
};
void LogS::SetBgrnd()
{
s_sprite_id = 1;
dbShowSprite(11);
Show();
}
void LogS::Skip()
{
if(dbReturnKey())
{
dbHideAllSprites();
Game::SetState(2);
}
}
Game.h应该使用静态函数;
# pragma once
#include "DarkGDK.h"
#include "LogS.h"
class Game
{
static int gameState;
public:
Game();
static void SetState(int gameState);
};
Game::Game()
{
LoadImages();
SetState(1);
}
inline void Game::SetState(gameState& g)
{
gameState = g;
}
编辑出不相关的位。如果你不能说,我是新来的:P 感谢任何帮助。谢谢。
答案 0 :(得分:2)
静态成员变量must
在类外定义:
class Game
{
static int gameState;
public:
Game();
static void SetState(int gameState);
};
int Game::gameState = 0;
正如@Drew Dormann指出的那样:
从Game.h中删除#include "LogS.h"
。
Game.h不需要编译LogS
的定义。
将#include "Game.h"
添加到LogS.h。
LogS.h 需要要编译的Game
的定义。