> 백엔드 개발 > C++ > 템플릿 클래스가 다른 템플릿 매개변수를 사용하여 Friend 템플릿 클래스를 선언해야 하는 이유는 무엇입니까?

템플릿 클래스가 다른 템플릿 매개변수를 사용하여 Friend 템플릿 클래스를 선언해야 하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-22 08:49:10
원래의
529명이 탐색했습니다.

Why Does a Templated Class Need to Declare a Friend Templated Class with a Different Template Parameter?

친구 템플릿 클래스가 포함된 템플릿 클래스: 메커니즘 해독

이 시나리오에서는 이진 트리 클래스 템플릿(BT)과 클래스 템플릿(BE)을 정의합니다. )는 트리의 요소를 나타냅니다. 친구 템플릿을 BT BT 대신. 이 동작을 조사하면 클래스 템플릿과 친구 관계를 철저히 이해할 수 있습니다.

중첩 템플릿 및 섀도잉

처음에는 친구 템플릿을 템플릿로 선언하려고 합니다. 친구 클래스 BT;. 그러나 중첩된 템플릿의 템플릿 매개변수는 동일한 이름을 가질 수 없으므로 이는 금지됩니다. 중첩된 템플릿은 고유한 템플릿 매개 변수 이름을 사용해야 합니다.

친구 관계 정의

템플릿 친구 클래스 BT;, BT의 템플릿 인수에 관계없이 BT와 BE 사이에 친구 관계를 설정합니다. 이는 BT의 모든 인스턴스화가 BE 인스턴스화의 전용 멤버에 액세스할 수 있음을 의미합니다.

친구 관계를 BE와 동일한 템플릿 인수를 활용하는 BT 인스턴스화로만 제한하려면 다음을 선언해야 합니다.

template<class T> friend class bar<T>;
로그인 후 복사

특정한 경우에는 친구 클래스 표시줄;을 선언합니다. BE 클래스 내에서는 충분합니다.

위 내용은 템플릿 클래스가 다른 템플릿 매개변수를 사용하여 Friend 템플릿 클래스를 선언해야 하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿