중첩 클래스에 프랜드 함수를 정의 하려면???
글쓴이: exsider / 작성시간: 금, 2003/10/24 - 3:54오후
class A { private: class B { public: // 멤버데이터와 함수 모두 public std::ostream & print(std::ostream &); ... }; friend std::ostream & operator<<(std::ostream & , const A::B &); ... public: ... }; std::ostream & operator<<(std::ostream & os, const A::B & p) { return p.print(os); }
위의 코드처럼 A 클래스 안에 정의한 B 클래스를 출력하는 연산자를 만들려고
하는데요,
class A 에 프랜드 선언이 있는데도 접근할 수 없다며 에러가 납니다.(vc++6)
cannot access private class declared in class 'A'
그런데 g++에서는 잘 컴파일이 됩니다.
이게 vc++ 의 문제인가요???
컴파일 되게 하는 방법이 없는지???
Forums:
Re: 중첩 클래스에 프랜드 함수를 정의 하려면???
Orion Project : http://orionids.org
friend 는 어디에 있든 상관없지 않나요?
Accelerated C++ 번역서
338 쪽 맨 아래, 349 쪽 맨 위.
그렇다면 GCC 의 bug 로 봐야 할 것 같습니다.
만약 public 에 원형선언을 해서 가능하다면 GCC 를 배려해서 public 에 선언해야겠지만 말입니다.
댓글 달기