作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想做类似下面的事情:
class Whatever {
public:
enum PhysicalObjectType {
STATIC_MISC_OBJECT,
DYNAMIC_MISC_OBJECT,
STATIC_MISC_OBJECT_WALKABLE,
DYNAMIC_MISC_OBJECT_WALKABLE,
STATIC_MISC_OBJECT_KILL,
DYNAMIC_MISC_OBJECT_KILL,
STATIC_MISC_OBJECT_BREAK,
DYNAMIC_MISC_OBJECT_BREAK,
BOUNDARY,
BOUNDARY_GROUND,
PERMANENT_JOINT,
MOUSE_JOINT
};
};
然后是一个方法,该方法将根据类外的上述代码检索类型。所以假设在另一个类中我有一个 Whatever
的实例,我在 myWhateverInstance
上调用 getType() 并进行比较以确定它是什么类型,如下所示:
if( myWhateverInstance.getType() == STATIC_MISC_OBJECT ) {
}else ...
然而,那是行不通的。基本上无论我如何尝试解决它们,我都无法访问类外枚举中的任何值。我在这里犯了什么菜鸟错误? (请注意,我遇到的特定错误未在范围内声明,或者 XX 不是有效的命名空间或类等)。
最佳答案
当访问作为类成员的枚举器时,您必须使用类的名称来限定它们的名称。所以枚举器是 Whatever::STATIC_MISC_OBJECT
等等。
仅当从类外部访问枚举器时才需要这样做。在类的范围内,您可以简单地使用基本名称。
关于c++ - 无法解析嵌套枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8682969/
我是一名优秀的程序员,十分优秀!