1
不是一個真正的大問題,但我想知道是否智能感知搞砸了,當涉及到類中的朋友功能?智能感知和朋友功能虛假錯誤(VS2010)
我有一個類使用ostream和istream的重載操作符(< <,>>),並且我把它們標記爲我班內的朋友函數。所以理論上他們應該可以訪問班級的私人成員。該程序編譯和運行良好,沒有錯誤 - 但由於我繼續編寫代碼,智能感知不斷報告成員函數不可訪問的功能。它仍然編譯,但我想知道這是智能感知問題還是我的一端,我只是碰巧幸運的是它運行了嗎?
friend std::ostream & operator <<(std::ostream &, const Rational &);
friend std::istream & operator >>(std::istream &, Rational &);
std::ostream & operator <<(std::ostream & outs, const Rational & source)
{
outs << source.itsNum << '/' << source.itsDen;
return outs;
}
std::istream & operator >>(std::istream & ins, Rational & target)
{
ins >> target.itsNum >> target.itsDen;
return ins;
}
實際的流操作符是否也在類中,而不僅僅是'friend'聲明? –
另外,你應該檢查輸入的操作符,因爲你忘記了斜線。 –
不,朋友聲明在類內,但實際函數在類之外(但在同一個頭文件和命名空間中)。 –