"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 템플릿 클래스가 다른 템플릿 매개변수를 사용하여 Friend 템플릿 클래스를 선언해야 하는 이유는 무엇입니까?

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

2024년 11월 13일에 게시됨
검색:259

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

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

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

중첩 템플릿 및 섀도잉

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

친구 관계 정의

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

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

template friend class bar;

특정 경우에는 친구 클래스 bar를 선언합니다. BE 클래스 내에서는 충분합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3