G++聲明模板友元函數

此頁由 Linux Wiki用戶Chenxing 於 2008年2月5日 (星期二) 13:03 的最後更改。 在RuiCong的工作基礎上。

出自Linux Wiki

提示:此文已超过 16 年(5924 天)未更新,如发现内容过时或有误,欢迎改进:)

本文主要討論利用類型參數,把模板函數聲明為對應模板類的友員函數的問題。

下面是一個例子,注意:

  1. 在使用friend前加入了對func的聲明
  2. 在聲明friend時,func後有<>
  3. 此段代碼不能在VC6中編譯通過。
#include<iostream>
using namespace std;
 
template < class T > void func (T arg);
 
template < class T >
class CTemp{
    friend void func<> (T arg);
    private:
        T element;
    public:
        CTemp (T arg):element(arg){ }
};
 
template < class T >
void func (T arg){
    CTemp < T > a (arg);
    int i;
    cout << a.element << endl;
    return;
}
 
int main(){
    func (5);
    return 0;
}

本文对您有帮助?分享给更多朋友!

反馈与讨论

发现文档不全面、有错误却没时间编辑文档?想分享自己的经验或见解?欢迎在此留言、讨论。
简体繁体转换