在下面的代码片段中,为什么' 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();
}
答案 0 :(得分:1)
根据C ++标准
9.7嵌套类声明
1可以在另一个类中声明一个类。一个类声明 在另一个内部称为嵌套类。嵌套类的名称是 它的封闭类本地。 嵌套类在范围内 它的封闭类。