【问题标题】:Inner class access to outer class nested enum内部类访问外部类嵌套枚举
【发布时间】:2014-10-30 18:41:25
【问题描述】:

在下面的代码片段中,为什么内部类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++ enums scope inner-classes


    【解决方案1】:

    根据 C++ 标准

    9.7 嵌套类声明

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

    【讨论】:

      猜你喜欢
      • 2012-01-17
      • 2014-02-11
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多