operator==()運(yùn)算符重載為什么不能聲明為友元函數(shù)?
#pragma?once #ifndef?COORDINATE_H #define?COORDINATE_H #include?<iostream> using?namespace?std; class?Coordinate{ public: friend?bool?operator==(Coordinate?&,?Coordinate?&); friend?ostream&?operator<<(ostream?&os,?Coordinate?&coor); Coordinate&?operator=(const?Coordinate?&rhs); Coordinate(int?x=0,?int?y=0); Coordinate(const?Coordinate?&rhs); //void?printCoordinate(); protected: private: int?m_iX; int?m_iY; }; Coordinate::Coordinate(int?x,?int?y) { m_iX?=?x; m_iY?=?y; } Coordinate::Coordinate(const?Coordinate?&rhs) { m_iX?=?rhs.m_iX; m_iY?=?rhs.m_iY; } Coordinate?&?Coordinate::operator=(const?Coordinate?&rhs) { m_iX?=?rhs.m_iX; m_iY?=?rhs.m_iY; return?*this; } ostream&?operator<<(ostream?&os,?Coordinate?&coor) { os?<<?"("?<<?coor.m_iX?<<?","?<<?coor.m_iY?<<?")"?<<?endl; return?os; } bool?operator==(Coordinate?&lhs,Coordinate?&rhs) { if?(lhs.m_iX==rhs.m_iX&&lhs.m_iY==rhs.m_iY) return?true; else return?false; }? #endif?//?!COORDINATE_H
operator==運(yùn)算符重載仍然在下面這個(gè)成員函數(shù)中報(bào)錯(cuò)
int?MyList::LocateMyList(Coordinate?*?p) { for?(int?i?=?0;?i?<?m_iLength;i++) { if?(m_pList[i]?==?*p) //error:沒(méi)有與這些操作數(shù)匹配的"=="運(yùn)算符 return?i; } return?-1; }
2020-04-05
老師好像是說(shuō) ==只傳進(jìn)去一個(gè)參數(shù) ,所以就不需要用友元函數(shù)重載
2020-03-13
你在函數(shù)申明的時(shí)候,參數(shù)都沒(méi)寫。
==運(yùn)算符重載的時(shí)候,傳入一個(gè)參數(shù)就行,是比較傳入?yún)?shù)和當(dāng)前參數(shù)。? 你寫的傳入了2個(gè)參數(shù)
個(gè)人拙見(jiàn)