템플릿 클래스 친구와 함께 클래스 템플릿 탐구
이진 트리 클래스(BT)와 해당 요소 클래스(BE)를 정의할 때, BT가 BE의 비공개 멤버에 액세스하려면 친구 관계를 설정하는 데 필요합니다. 그러나 관계를 올바르게 정의하려면 기본 메커니즘을 이해하는 것이 중요합니다.
원래 친구 관계를 템플릿로 선언하려고 했습니다. 친구 클래스 BT. 그러나 이 구문은 BE의 템플릿 매개변수와 이름 지정 충돌을 발생시킵니다. 중첩된 템플릿 내의 템플릿 매개변수에는 고유한 이름이 있어야 합니다.
대신 다음과 같은 다른 템플릿 매개변수 이름을 사용해야 합니다.
template<class T> class BE { template<class U> friend class BT; };
이 선언은 템플릿에 관계없이 모든 BT 클래스를 나타냅니다. 인수는 템플릿 인수가 일치하는 모든 BE 클래스의 친구입니다.
다양한 유형의 친구를 더 명확하게 하려면 다음 예를 고려하세요. 관계:
template<typename T> struct foo { template<typename U> friend class bar; };
이 경우 bar는 bar의 템플릿 인수에 관계없이 foo의 친구입니다. bar의 모든 전문화는 foo의 전문화의 친구가 됩니다.
template<typename T> struct foo { friend class bar<T>; };
여기서 bar는 템플릿 인수가 foo의 인수와 일치하는 경우에만 foo의 친구입니다. 따라서 bar
특정 시나리오에서는 친구 클래스 bar
위 내용은 다양한 템플릿 인수를 사용하여 템플릿 클래스에서 친구 관계를 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!