2012-05-18 8 views
0

죄송합니다.이 질문은 여러 번 묻는 것 같지만 설치에 대한 다른 대답을 얻을 수 없습니다. 그 a_func 상관없이 사용되는 유형 이름, (A)의 모든 인스턴스에 대해 친구 없도록템플릿 클래스에 템플릿 friend 함수를 어떻게 선언 할 수 있습니까?

namespace ddd { 
    template <typename T> 
    class A { 
    ... 
    }; 

    template <typename T, typename U> 
    A<T> a_func(const A<U> &a) { 
    ... 
    } 
} 

내가이의 친구로 a_func 선언하려면, 내가 원하는 : 나는 다음과 같은 클래스와 기능 설정을 가지고 T와 U (e, g, a_func는 A에 접근 할 수있다).

감사합니다.

+0

나는 당신이 쓴 무엇을 읽고, 아직 모든 인스턴스에 대해 친구 *로 무슨 뜻인지 궁금해 * ...'a_func '을'A '의 친구로하고 싶습니까? 또는'A_func '(아마도'a_func ')이'A '의 친구가되기를 원하는 인스턴스화 유형'T1'이 무엇이든 상관 없습니까? –

+0

a_func 이 A 의 친구가되기를 바랍니다. – Max

답변

1

당신은 할 수있다 (당신이 그것을 가지고 어떻게 모양)이 방법 :

template<typename X> 
class A { 
    template<typename T, typename U> 
    friend A<T> a_func(const A<U>& a); 
}; 

template<typename T, typename U> 
A<T> a_func(const A<U>& a) { 
    // whatever 
} 

Demo

+0

@ Max : 어떤 오류가 발생 했습니까? 이것은 (잘, 템플릿의 정의에서'friend'를 제거한 후에) 작동해야합니다 ... –

+0

@ DavidRodríguez-dribeas ha, 고마워요. –

관련 문제