> 백엔드 개발 > C++ > 템플릿 기반 클래스 또는 구조를 친구로 선언하는 방법은 무엇입니까?

템플릿 기반 클래스 또는 구조를 친구로 선언하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-12 21:47:01
원래의
931명이 탐색했습니다.

How to Declare a Templated Class or Structure as a Friend?

템플릿된 클래스 또는 구조체를 친구 선언으로

템플릿된 구조체나 클래스를 친구로 선언하려고 하면 컴파일 오류가 발생할 수 있습니다. 예를 들어 다음 코드를 생각해 보세요.

template <typename T>
struct foo
{
    template <typename S>
    friend struct foo<S>;

private:
    // ...
};
로그인 후 복사

이 코드는 여러 템플릿 매개변수 목록이 허용되지 않는다는 오류 메시지와 함께 컴파일에 실패합니다. 그러나 여전히 foo 템플릿 구조의 가능한 모든 인스턴스화가 foo 모든 T.

솔루션

이를 달성하려면 다음 선언을 사용할 수 있습니다.

template <typename> friend class foo
로그인 후 복사

이 선언은 foo 클래스의 모든 템플릿 인스턴스화는 다른 모든의 친구가 됩니다. foo 클래스의 템플릿 인스턴스화.

추가 참고

선언

template <typename>
friend struct foo;
로그인 후 복사

도 작동하지만 foo 클래스의 모든 템플릿 인스턴스화를 만듭니다. foo는 서로의 친구를 구성합니다. 이것은 아마도 당신이 의도한 동작일 것입니다. 그러나 친구 선언과 템플릿의 구문이 다소 복잡하다는 점은 주목할 가치가 있습니다.

위 내용은 템플릿 기반 클래스 또는 구조를 친구로 선언하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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