头文件中的枚举

Enum in header files

本文关键字:枚举 文件      更新时间:2023-10-16

我在一个名为"sm.h"的头文件中声明了enum

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

其在头文件中定义类函数。

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

从文件链接到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中的所有内容。

最有可能的是您没有在base.cpp 中包含"sm.h"