编辑感谢问题下的评论,我意识到您还必须在头文件中声明一个枚举。><为什么互联网上没有任何关于enums的内容提到这一点?现在编译器正在识别Geologist。
我的枚举在一个名为GameModeState
的类的namespace Star
中,但我需要在一个也使用namespace Star
的类ZoneMovementState
中检查当前枚举值。我将GameModeState包含在ZoneMovementState的顶部。GameModeState中的枚举声明如下:
enum Job {Landman = 0, Geologist = 1};
我正试图在ZoneMovementState:中使用此代码
int placeholderJob = Star::GameModeState::Geologist;
//or I've tried this
int placeholderJob = GameModeState::Geologist;
出于某种原因,我的编译器在两次尝试中都没有认出地质学家;如何将placeholderJob
设置为Geologist?
它在您的程序范围内不识别地质学家吗?(当你把鼠标悬停在上面时,intellisense是否会弹出并向你显示Geologist是一个等于1的枚举类型(,或者它下面有一个蠕动的(表示它无法识别该类型?(
这可能是一个作用域问题(尽管根据您的信息,听起来不像(,或者您使用的编译器不允许在没有显式强制转换的情况下将枚举的值设置为整数。
为什么互联网上没有任何关于enums的内容提到这一点?
互联网上不需要提及这一点,因为它充斥着汇编单位。
头文件(基本上(告诉编译器存在什么名称(标识符(以及它们代表什么。这就是为什么编译器在不知道地质学家代表什么的时候告诉你。
函数、字段、类、structs、typedefs、名称空间也是如此,所以真正的问题是
为什么编译器会神奇地知道另一个编译单元中的枚举,而其他一切都必须为他拼写?