无法解析嵌套枚举

Can't Resolve Nested Enums

本文关键字:嵌套 枚举      更新时间:2023-10-16

我希望做以下事情:

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等等

只有在从类外部访问枚举数时才需要这样做。在类的作用域中,您可以简单地使用基名。

枚举是类的成员,您需要用类名限定它(除非代码是同一类的方法的一部分):

if( myWhateverInstance.getType() == Whatever::STATIC_MISC_OBJECT ) {
class C
{
 public:
  enum E
  {
   EA, EB
  };
};
C::E en = C::EA;