Friend 선언 간단한거 질문드려요 /_/; C++
글쓴이: chocokeki / 작성시간: 일, 2007/06/03 - 3:44오후
템플릿 A 안에 B라는 inner class 가 있구
템플릿 C안에 D라는 inner calss가 있는데요
(둘다 서로 다른 파일이구요..C의 헤더파일에서 A템플릿을 include 합니다..)
D의 메서드에서 A템플릿의 B class의 주소를 사용해야하는 일이 있어서
A템플릿의 B클래스를 참조하는 포인터
변수를 선언하려는데 ( A::B* variable 이런식으로 )
당연히 private로 보호가 되어있으니까 템플릿 C에서는
접근을 못하잖아요 그래서
D가 B에 접근할 수 있게 friend 를 선언하려고 하는데
B에서
template
class A
{
private:
class B //inner class
{
public:
friend C::D; 이런식으로 선언을 하니까 올바른 문법이 아니라고 거부를 하더라구요
그래서 혹시나해서
friend typename C::D; 로 해보고 T를 double로 바꿔서도 해봐도 역시나 같이 안되는데
어떻게 해야할까요?
Forums:
불가능할 것
불가능할 것 같습니다. friend의 대상은 클래스 템플릿이 아니라, 클래스 템플릿이 실체화(instantiation)된 템플릿 클래스여야 하는데, 그것을 알 수 없기 때문입니다.
댓글 달기