【发布时间】:2012-03-02 12:04:26
【问题描述】:
我在名为“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;
}
在头文件中定义了一个类函数。
没有全局冲突,因为它是整个程序中唯一的枚举
【问题讨论】:
-
它们是否在同一个命名空间中?
-
我没有使用名称空间。我需要命名空间吗
-
如果您可以发布更完整的代码将会很有用。这些部分本身似乎并没有错,因此您的代码中的不同级别一定有问题。
-
对不起,应该更明确。这里的很多人都是非常优秀的程序员,他们可以编写 6 行代码并弄清楚,嘿,你在全局命名空间中遇到了冲突或类似的爵士乐。但是对于我们这些普通人来说,我们通常喜欢拥有可编译、可测试的代码,这样我们就可以戳它并刺激它,直到它工作为止。至少您可能希望提供包含枚举声明和
load_rc()函数的标头。 -
对不起,我将添加所有base.cpp,base.h,sm.cpp,cm.h