#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_Hoperator==运算符重载仍然在下面这个成员函数中报错
int MyList::LocateMyList(Coordinate * p)
{
for (int i = 0; i < m_iLength;i++)
{
if (m_pList[i] == *p) //error:没有与这些操作数匹配的"=="运算符
return i;
}
return -1;
}老师好像是说 ==只传进去一个参数 ,所以就不需要用友元函数重载
你在函数申明的时候,参数都没写。
==运算符重载的时候,传入一个参数就行,是比较传入参数和当前参数。 你写的传入了2个参数
个人拙见