[완료] 접근 제한자를 무시하는 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
댓글 달기