"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > C++에서 템플릿 구조체/클래스를 어떻게 친구로 선언할 수 있나요?

C++에서 템플릿 구조체/클래스를 어떻게 친구로 선언할 수 있나요?

2024년 11월 19일에 게시됨
검색:528

How Can You Declare Templated Structs/Classes as Friends in C  ?

템플릿 구조체/클래스를 친구로 선언

C 영역에서 템플릿 구조체나 클래스를 친구로 선언하면 구문 관련 장애물이 나타날 수 있습니다. 이를 달성하려면 다음 접근 방식을 고려하십시오.

template 
struct foo
{
    template 
    friend class foo;

private:
    // ...
};

이 구문은 성공적으로 컴파일된 것으로 보입니다. 그러나 foo의 모든 템플릿 인스턴스화는 그들이 취하는 템플릿 매개변수에 관계없이 서로 친구로 선언됩니다. 이는 의도한 사용 사례와 일치할 수도 있고 그렇지 않을 수도 있습니다.

특정 인스턴스화로만 우정을 제한해야 하는 경우 다음 구문을 사용하여 이를 달성할 수 있습니다.

template 
struct foo
{
    template 
    friend struct foo;

private:
    // ...
};

안타깝게도 이 구문은 foo의 가능한 모든 인스턴스화를 포함하는 일반 선언을 허용하지 않습니다.

따라서 foo의 모든 템플릿 인스턴스화에서 우정을 구축하는 것이 목표라면, 친구 클래스 foo를 사용하는 두 번째 접근 방식은 C 구문의 제약 조건을 고려할 때 얻을 수 있는 가장 가까운 접근 방식입니다.

최신 튜토리얼 더>

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

Copyright© 2022 湘ICP备2022001581号-3