Enum在头文件中

时间:2012-02-09 23:37:36

标签: c++ enums header scope

我在名为“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;
}

定义头文件中的类函数。

没有全局冲突,因为它是整个程序中唯一的枚举

2 个答案:

答案 0 :(得分:3)

从您的文件链接,sm.hbase.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”