2012-05-18 87 views
0

對不起,這個問題似乎已被問了很多次,但我無法得到其他答案爲我的設置工作。我有以下類和功能設置:如何將模板好友函數聲明爲模板類?

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

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

我要聲明a_func作爲一個朋友,我想它,以便a_func是A的所有實例的朋友,無論哪個類型名用於T和U(例如,a_func可以訪問A)。

謝謝!

+0

我看了你寫的東西,但不知道你的意思*所有實例朋友什麼* ...你想'a_func '成爲'A '(可能還有'a_func ')成爲'A '的朋友嗎? –

+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:你得到了什麼錯誤?這應該工作(以及從模板的定義中刪除'朋友'後...) –

+0

@DavidRodríguez-dribeas哈,固定謝謝。 –