C++ 对外部类嵌套枚举的内部类访问

C++ 对外部类嵌套枚举的内部类访问,c++,enums,scope,inner-classes,C++,Enums,Scope,Inner Classes,在下面的代码片段中,为什么内部类CheckForA方法中的“A”不必是限定id(即返回myE==Outer::A)?是因为E和Inner都在同一个范围内吗?类作用域是否与命名空间作用域类似 class Outer { public: enum E{ A, B, C }; class Inner { public: void Set( E e_ ) { myE = e_; } bool CheckForA() const { return myE

在下面的代码片段中,为什么内部类
CheckForA
方法中的“A”不必是限定id(即
返回myE==Outer::A
)?是因为E和Inner都在同一个范围内吗?类作用域是否与命名空间作用域类似

class Outer 
{
public:
   enum E{ A, B, C };

   class Inner
   {
   public:
      void Set( E e_ ) { myE = e_; }
      bool CheckForA() const { return myE == A; }
      E myE;
   };

   void Set( E e_ ) { myInner.Set(e_); }
   bool CheckForA() const { return myInner.CheckForA(); };

   Inner myInner;
};


int main()
{
   Outer outer;
   outer.Set(Outer::A);

   return (int)outer.CheckForA();
}

根据C++标准

9.7嵌套类声明

1一个类可以在另一个类中声明。声明的类 在另一个类中称为嵌套类。嵌套类的名称为 它的封闭类的局部嵌套类在的范围内 它的封闭类。