我們有兩個班級模板:A和B以及一個功能模板f1()。就像這樣:關於班級模板朋友的一些問題
template< class T >
class A{};
template< class T >
class B
{
friend class A<T>; /* Expression 1 */
friend void f1(B<T> &b); /* Expression 2 */
};
template< class T >
void f1(B<T> &b) {}
int main()
{
A<int> a;
B<int> b;
f1(b);
return 0;
}
問題1:表達1製作的專業化與參數T A的朋友B與參數T.專業化的 但如何讓每一個 專業化分工的所有朋友的B?
問題2:如何在類定義之外定義f1? 這樣的代碼將產生一個錯誤:
undefined reference to `f1(B<int>&)'
問題3:如何使所有的F1()S(誰可以接收B作爲參數的所有專業化) 朋友B的每一個專業化的?
'模板朋友類A'和'模板朋友類A'有什麼區別?我不明白。@David Rodriguez –
2012-03-13 15:53:04
@UniMouS:如果你的意思是編輯,修復一個錯字(我認爲)。這是我幾乎沒有寫過的東西之一,語法也不是那麼簡單,我回顧了很久以前我寫過的其他答案,我用編譯器驗證了*,並且語法一致。 – 2012-03-13 15:56:51
哦,謝謝你的回答,我是C++的初學者,我不太明白這個語法。 @David Rodriguez – 2012-03-13 16:11:31