我在名为“sm.h”的头文件中声明了枚举
enum GameStates
{
STATE_NULL = 0,
STATE_INTRO,
STATE_TITLE,
STATE_MAIN,
STATE_EXIT
};
所有这一切都列出了可能的游戏状态
但是在“base.cpp”中的以下行:
stateID = STATE_INTRO;
编译器说“STATE_INTRO未在此范围内声明”。我不知道我做错了什么。我知道我已经包含了头文件,我可以从.cpp文件中减速。那么为什么我会收到这个错误。
stateID = STATE_INTRO;
用于:
bool baseFunctions::load_rc()
{
stateID = STATE_INTRO;
currentState = new Intro();
return true;
}
定义头文件中的类函数。
没有全局冲突,因为它是整个程序中唯一的枚举
答案 0 :(得分:3)
从您的文件链接,sm.h
和base.h
#ifndef BASE_H_INCLUDED
#define BASE_H_INCLUDED
将sm.h
中的一个更改为
#ifndef SM_H_INCLUDED
#define SM_H_INCLUDED
我希望你没事。
实际上,base.cpp
加载了base.h
,当它到达sm.h
时,#ifndef为false,因此它会排除sm.h
中的所有内容。
答案 1 :(得分:1)
最有可能的是你没有在base.cpp中包含“sm.h”