大神帮我看下,我写的类的操作符错在哪了?
编译的时候提示错误
#include<iostream>
using namespace std;
namespace Liyichao
{
class Point3D
{
public:
Point3D();
Point3D(int x1,int y1,int z1);
int getx() {return x;}
int gety() {return y;}
int getz() {return z;}
Point3D operator +(Point3D &x);
Point3D operator -(Point3D &x);
void operator =(Point3D &x);
bool operator ==(Point3D &x);
void look();
private:
int x;
int y;
int z;
};
}
namespace Liyichao
{
Point3D::Point3D()
{
x = 0;
y = 0;
z = 0;
}
Point3D::Point3D(int x1,int y1,int z1)
{
x = x1;
y = y1;
z = z1;
}
Point3D Point3D::operator +(Point3D &you)
{
return Point3D(x + you.getx(),y + you.gety(),z + you.getz());
}
Point3D Point3D::operator -(Point3D &you)
{
return Point3D(x - you.getx(),y - you.gety(),z - you.getz());
}
void Point3D::operator =(Point3D &you)
{
x = you.getx();
y = you.gety();
z = you.getz();
}
bool Point3D::operator ==(Point3D &you)
{
return (x == you.getx() && y == you.gety() && z == you.getz());
}
void Point3D::look()
{
cout<<"("<<getx()<<","<<gety()<<","<<getz()<<")\n";
}
}
using namespace Liyichao;
main()
{
cout<<"初始化x点的坐标为(1,2,3),y的坐标为(3,4,5),z的坐标为(1,1,1)\n";
Point3D x(1,2,3),y(3,4,5),z(1,1,1);
if(x == y)
cout<<"x == y\n";
else
cout<<"x != y\n";
cout<<"把y的坐标复制给x\n";
x = y;
cout<<"此时x的坐标为:";
x.look();
cout<<"x+z后的结果为";
x = x + z;//好像是加号操作符定义的有问题,但有不知道哪错了
x.look();
getchar();
}
[解决办法]
参数加const