繁体   English   中英

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

[英]Inner class access to outer class nested enum

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

根据C ++标准

9.7嵌套类声明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM