如何解决在相同名称空间但不同类中为枚举值设置值? C ++
| 编辑 多亏了在该问题下的评论,我意识到您还必须在头文件中声明一个枚举。 >。<为什么Internet上关于枚举的任何内容都没有提及? 现在,编译器正在识别地质学家。 我的枚举在名为GameModeState
的类中的namespace Star
内,但是我需要检查在名为ZoneMovementState
的类中的当前枚举值,该类也使用namespace Star
。我在ZoneMovementState的顶部包含GameModeState。
GameModeState中的枚举声明是这样的:
enum Job {Landman = 0,Geologist = 1};
我正在尝试在ZoneMovementState中使用以下代码:
int placeholderJob = Star::GameModeState::Geologist;
//or I\'ve tried this
int placeholderJob = GameModeState::Geologist;
由于某种原因,我的编译器在任何尝试中都无法识别地质学家。我该如何为地质学家设置placeholderJob
?
解决方法
它不会在您的计划范围内认可地质学家吗? (当您将鼠标悬停在上方时,会弹出intellisense并向您显示“地质学家”是等于1的枚举类型)还是在其下方有一个弯曲的字符(表明它无法识别该类型?)
这可能是一个范围问题(尽管根据您的信息听起来并不像),或者您使用的编译器不允许在没有显式强制转换的情况下将枚举的值设置为整数。
, 为什么在互联网上没有任何关于枚举的内容?
互联网不需要提及这一点,因为它增加了编译单元。
头文件在那里告诉编译器(基本上)存在什么名称(标识符)以及它们代表什么。这就是为什么编译器会在您不知道地质学家表示什么时告诉您的原因。
函数,字段,类,结构,typedef,名称空间也是如此,所以真正的问题是
当必须为他解释所有其他内容时,为什么编译器会神奇地知道另一个编译单元中的枚举?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。