의 내가 이진 트리, 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:
...
};
이 일 것으로 보인다
같은 것을 가지고; 그러나 나는 무슨 일이 벌어지고 있는지에 대해 궁금해하고 있습니다.
나는 원래 그러나 그것은 U
(또는 T
이외의) 여기,이 이유를 사용할 필요가 나타납니다
template<class T> friend class BT;
로 친구를 선언하려고? 특정 BT
이 특정 BE
클래스의 친구라는 것을 의미합니까?
템플릿 및 친구의 IBM 페이지에는 기능에 대한 다른 유형의 친구 관계가 있지만 클래스에는 해당하지 않는 구문이 있습니다 (구문을 추측하는 것은 아직 솔루션에 수렴되지 않았습니다). 필자가 정의하고자하는 친구 관계의 유형에 대한 올바른 사양을 얻는 방법을 이해하고 싶습니다.
비밀은 친구 클래스 BT을 사용하기 위해 BT 선언을 전달해야 할 필요가 있다는 것입니다. BE의 라인은 아니지만 템플릿의 경우는 친구 클래스 BT; 도와 주셔서 감사합니다! –
더 구체적으로 말하자면'템플릿 class BT;를 선언하고 BE의 정의에 앞서'friend class BT ;'_inside_ 클래스 BE를 사용해야합니다. –