C 영역에서 템플릿 구조체 또는 클래스를 친구로 선언하면 구문 관련 장애물이 나타날 수 있습니다. 이를 달성하려면 다음 접근 방식을 고려하십시오.
template <typename T> struct foo { template <typename> friend class foo; private: // ... };
이 구문은 성공적으로 컴파일된 것으로 보입니다. 그러나 foo의 모든 템플릿 인스턴스화는 그들이 취하는 템플릿 매개변수에 관계없이 서로 친구로 선언됩니다. 이는 의도한 사용 사례와 일치할 수도 있고 그렇지 않을 수도 있습니다.
특정 인스턴스화로만 우정을 제한해야 하는 경우 다음 구문을 사용하여 이를 달성할 수 있습니다.
template <typename T> struct foo { template <typename S> friend struct foo<S>; private: // ... };
안타깝게도 이 구문은 foo의 가능한 모든 인스턴스화를 포함하는 일반 선언을 허용하지 않습니다.
따라서 foo의 모든 템플릿 인스턴스화에서 우정을 구축하는 것이 목표라면 친구 클래스 foo를 사용하는 두 번째 접근 방식이 가장 가깝습니다. C 구문의 제약으로 인해 얻을 수 있습니다.
위 내용은 C에서 템플릿 구조체/클래스를 어떻게 친구로 선언할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!