다음 코드 조각에서 내부 클래스 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 클래스는 다른 클래스 내에서 선언 될 수 있습니다. 다른 클래스 내에서 선언 된 클래스를 중첩 클래스라고합니다. 중첩 클래스의 이름은 둘러싸는 클래스의 로컬입니다. 중첩 클래스는 둘러싸는 클래스의 범위에 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다