内部类访问外部类嵌套枚举

时间:2014-09-05 18:50:55

标签: c++ enums scope inner-classes

在下面的代码片段中,为什么' A'在内部类CheckForA方法中,不必是限定ID(即return 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();
}

1 个答案:

答案 0 :(得分:1)

根据C ++标准

  

9.7嵌套类声明

     

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