하자 내가, 이진 트리에 대한 클래스를 만드는거야라고 BT, 나는, 나무의 요소를 설명하는 클래스가 BE, 같은 뭔가를
template<class T> class BE {
T *data;
BE *l, *r;
public:
...
template<class U> friend class BT;
};
template<class T> class BT {
BE<T> *root;
public:
...
private:
...
};
이것은 작동하는 것처럼 보입니다. 그러나 아래에서 무슨 일이 일어나고 있는지에 대한 질문이 있습니다.
나는 원래 친구를 다음과 같이 선언하려고했습니다.
template<class T> friend class BT;
그러나 여기에서 U(또는 다른 것을 T) 사용해야하는 것 같습니다. 왜 그렇습니까? BT특정 BE클래스가 특정 클래스의 친구 임을 의미합니까 ?
템플릿 및 친구에 대한 IBM 페이지에는 클래스가 아닌 함수에 대한 다른 유형의 친구 관계의 예가 있습니다 (그리고 구문이 아직 솔루션에 수렴되지 않았 음을 추측). 정의하고 싶은 친구 관계 유형에 맞는 사양을 얻는 방법을 이해하고 싶습니다.