C++的重载问题

2025-04-27 20:43:29
推荐回答(1个)
回答1:

修改后的,代码里给了注释

#include
#include
class PCoor;
class RCoor
{
private:
double x,y;
public:
double GetX();
double GetY();
RCoor();
RCoor(double, double);
//重载赋值运算符 使之完成坐标转换
const RCoor &operator=(const PCoor&);
};
class PCoor //class声明移到前面
{
private:
double angle, dis;
public:
double GetAngle() const; //这里加const
double GetDis() const; //这里加const
PCoor();
PCoor(double, double);
//重载赋值运算符 使之完成坐标转换
const PCoor& operator=( RCoor&);
};
double RCoor::GetX()
{
return x;
}
double RCoor::GetY()
{
return y;
}
RCoor::RCoor()
{
x = 0.0;
y = 0.0;
}
RCoor::RCoor(double x, double y)
{
this->x = x;
this->y = y;
}
const RCoor& RCoor::operator=(const PCoor& pcoor)
{
double a = pcoor.GetAngle();
double r = pcoor.GetDis();
x = r * cos(a);
y = r * sin(a);
}
////////////////////////////////////////////////////////////////////////////////
double PCoor::GetAngle() const
{
return angle;
}
double PCoor::GetDis() const
{
return dis;
}
PCoor::PCoor()
{
angle = 0.0;
dis = 0.0;
}
PCoor::PCoor(double angle, double dis)
{
this->angle = angle;
this->dis = dis;
}
const PCoor& PCoor::operator=( RCoor& rcoor)
{
double x = rcoor.GetX();
double y = rcoor.GetY();
dis = sqrt(x*x + y*y);
angle = atan(y/x);
}
////////////////////////////////////////////////////////////////////////////////
int main()
{
return 0;
}