템플릿 구조체/클래스를 친구로 선언
C에서는 템플릿 구조체나 클래스를 다른 템플릿 구조체의 친구로 선언할 때 어려움에 직면할 수 있습니다. 또는 수업. 다음 시나리오를 고려하십시오.
template <typename T> struct foo { template <typename S> friend struct foo<S>; private: // ... };
Visual C 8에서 이 코드를 컴파일하면 오류 C3857이 발생할 수 있습니다. "여러 템플릿 매개 변수 목록은 허용되지 않습니다." 이는 컴파일러가 friend 선언 내의 중첩된 템플릿 선언을 처리할 수 없기 때문에 발생합니다.
이 문제를 해결하려면 단순화된 구문을 활용할 수 있습니다.
template <typename> friend class foo;
이 구문은 다음의 모든 인스턴스를 선언합니다. 둘러싸는 foo 템플릿의 친구인 템플릿 구조체 foo. 이는 foo 친구의 가능한 모든 인스턴스화를 만들려는 의도된 목표를 효과적으로 달성합니다.
이 접근 방식은 특정 템플릿 인수에 관계없이 모든 템플릿을 서로 친구로 만든다는 점에서 원래 선언과 다릅니다. . 이는 특정 요구 사항에 따라 원하는 동작일 수도 있고 아닐 수도 있습니다.
위 내용은 C에서 템플릿 구조체/클래스를 친구로 선언하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!