日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

学习笔记-----C++模板类中友元函数重载输出运算符时提示无法解析的外部符号解决方案

發(fā)布時間:2024/4/19 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习笔记-----C++模板类中友元函数重载输出运算符时提示无法解析的外部符号解决方案 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

今天在寫單向鏈表實現(xiàn)線性表的時候打算重載輸出運算符用來將線性表輸出,結(jié)果無奈又遇到了問題。

大致代碼如下

<pre name="code" class="cpp"> template<class T> class chainList : public linearList<T> {friend ostream& operator<<(ostream & out, const chainList<T> & rhs); public:...... private:...... };//友元函數(shù)實現(xiàn)的實現(xiàn) template<class T> ostream & operator<<(ostream & out, const chainList<T> & rhs) {...... }



運行的時候編譯器報錯說 無法解析的外部符號

想來想去也只能使友元函數(shù)出了問題,于是果斷百度了解了一下

友元函數(shù)雖然可以訪問類內(nèi)部的成員,但是它相對于類是獨立的,它的實現(xiàn)不能依賴類。代碼中用到模板類template<class T> 而在類內(nèi)聲明友元函數(shù)的時候也用到了<T>,所以此時友元函數(shù)是依賴于類的實現(xiàn)而實現(xiàn)的,編譯器才會報錯。

解決方法有兩個

第一種:可以將友元函數(shù)的實現(xiàn)放在類的內(nèi)部

第二種:在類的內(nèi)部聲明友元函數(shù)的時候在之前為它單獨配一個模板類型,然后在外部實現(xiàn)

template<class T> class chainList : public linearList<T> {template<typename U>friend ostream& operator<<(ostream & out, const chainList<U> & rhs); public:...... private:...... };//友元函數(shù)實現(xiàn)的實現(xiàn) template<typename U> ostream & operator<<(ostream & out, const chainList<U> & rhs) {...... }


與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的学习笔记-----C++模板类中友元函数重载输出运算符时提示无法解析的外部符号解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。