C++中友元函數編譯出錯,no match for operator *的問題


最近在linux上編譯C++的程序,發現很多明明已經實現了的友元類型的operator運算符總是提示 no match for operator xxx,也就是找不到函數的實現。

但是把友元函數換成類成員函數就沒有問題,這確實有點詭異。

經過一番查找發現,原來在類中聲明為友元函數的聲明只是對權限的聲明,因此需要在類定義外添加友元函數真正的聲明。(雖然在VS中完全沒問題,但是在linux下無法通過編譯)

 

class Expr
{
public:
       friend Expr operator+(const Expr& x, const Expr& y); //只是權限的聲明
        
}
Expr operator+(const Expr& x, const Expr& y); //這才是真正的聲明

  

注意要在后面添加,在前面添加會提示該類沒有定義的錯誤。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM