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

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

Linda Hamilton
Linda Hamilton원래의
2024-11-22 08:49:10541검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.