[완료] 접근 제한자를 무시하는 C++의 nested class
글쓴이: klara / 작성시간: 일, 2009/03/29 - 1:02오후
class A { public: class B; A(): value(0) {} private: int value; }; class A::B { public: void setValue(A &a) {a.value = 2;} }; int main() { A a; A::B b; b.setValue(a); return 0; }
요런 테스트 코드를 만들어 보았습니다. A::B::setValue 함수는 클래스 A의 private멤버인 value에 접근하고 있고, A::B는 A의 friend class가 아니므로 컴파일에러가 날것이라고 생까했는데, 전혀 에러없이 그냥 컴파일이 되버리더군요.
nested class에 대해서는 접근 제한자가 적용되지 않는 듯한데, 이것은 정상적인 것인가요..? 아니면 컴파일러의 버그인걸까요? 참고로 사용한 컴파일러는 gcc(g++)4.3.2 입니다.
Forums:
표준에 제정된
표준에 제정된 거였네요.
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#45
댓글 달기