定义类中的成员函数出现错误
在类中定义了成员函数,是减法的重载,可是编译出现了错误。下面有错误信息。请各位帮忙看看呀!
#include<iostream>
using namespace std;
class Point
{
int x,y;
public:
void set(int a,int b)
{
x=a,y=b;
}
void print()const
{
cout<<"("<<x<<","<<y<<")\n";
}
Point operator-(const Point& a, const Point& b)
{
Point s;
s.set(a.x-b.x, a.y-b.y);
return s;
}
//==========================================
int main()
{
Point s,t;
s.set(7,9);
t.set(1,2);
(s-t).print;
return 0;
}
error C2804: binary 'operator -' has too many parameters
error C2333: '-' : error in function declaration; skipping function body
fatal error C1004: unexpected end of file found
[解决办法]
- C/C++ code
#include<iostream>using namespace std;class Point{ int x,y;public: void set(int a,int b) { x=a,y=b; } void print()const { cout<<"("<<x<<","<<y<<")\n"; } Point operator-(const Point& a) { Point s; s.set(x-a.x, y-a.y); return s; } };int main(){ Point s,t; s.set(7,9); t.set(1,2); (s-t).print(); return 0;}
[解决办法]
个人感觉你那个减号操作符的重载参数有问题,因为在类里面重载操作符的话已经有一个隐含形参了,就是this,所以对于重载的二元操作符,比如加减乘除,你只需要显示定义一个形参就行了,会自动绑定到右操作数,还有你木有定义那个构造函数啊,个人感觉还是定义一个!