由于问题下面的注释,编辑,我意识到您还必须在头文件中声明一个枚举。>.<为什么在互联网上什么都不提这个?现在编译器正在识别地质学家。
我的枚举位于namespace Star中的一个名为GameModeState的类中,但我需要在一个名为ZoneMovementState的类中检查当前枚举值,该类也在使用namespace Star。我把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设置为地质学家?
发布于 2011-04-14 14:49:14
它不承认地质学家在你的计划范围内吗?(当您鼠标移动时,intellisense会弹出并向您显示地质学家是一个等于1的枚举类型吗?)或者它下面是否有一个符号(表示它不识别该类型?)
这可能是一个范围问题(尽管根据您的信息,它听起来不像它),或者您正在使用的编译器不允许将枚举的值设置为没有显式转换的整数。
发布于 2011-04-14 14:50:21
为什么在互联网上什么都不提这个?
互联网不需要提及这一点,因为它摸索着编译单元。
头文件可以告诉编译器(基本上)存在哪些名称(标识符)以及它们代表什么。这就是为什么编译器告诉你,当他不知道地质学家代表什么。
函数、字段、类、结构、类型、命名空间也是如此,所以问题是
为什么一个编译器会神奇地知道另一个编译单元中的枚举,而其他的一切都必须为他解释?
https://stackoverflow.com/questions/5664883
复制相似问题