头文件中的枚举

发布于 2025-01-04 00:21:35 字数 591 浏览 1 评论 0原文

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

在头文件中定义类函数。

不存在全局冲突,因为它是整个程序中唯一的枚举

I have enum declared in a header file called "sm.h"

enum GameStates
{
  STATE_NULL = 0,
  STATE_INTRO,
  STATE_TITLE,
  STATE_MAIN,
  STATE_EXIT
};

All it does is list the possible game states

However in the following line in "base.cpp":

stateID = STATE_INTRO;

The compiler says "STATE_INTRO was not declared in this scope". I have no idea what I am doing wrong. I know that I have included the header file right and I can go to its deceleration from the .cpp file. So why am I getting this error.

stateID = STATE_INTRO;

Is used in:

bool baseFunctions::load_rc()
{
 stateID = STATE_INTRO;

 currentState = new Intro();

 return true;
}

which defines a class function in a header file.

There are no global conflicts because it is the only enum in the whole program

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

沧桑㈠ 2025-01-11 00:21:36

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

Most likely is that you aren't including "sm.h" in base.cpp

淡莣 2025-01-11 00:21:35

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

From your link to your files, you have the following in both sm.h and base.h

#ifndef BASE_H_INCLUDED
#define BASE_H_INCLUDED

Change the one in sm.h to something like

#ifndef SM_H_INCLUDED
#define SM_H_INCLUDED

and I expect you'll be fine.

As it is, base.cpp loads base.h, then when it gets to sm.h the #ifndef is false, so it excludes everything in sm.h.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文