首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

定义类中的成员函数出现异常

2012-11-19 
定义类中的成员函数出现错误在类中定义了成员函数,是减法的重载,可是编译出现了错误。下面有错误信息。请各

定义类中的成员函数出现错误
在类中定义了成员函数,是减法的重载,可是编译出现了错误。下面有错误信息。请各位帮忙看看呀!
#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,所以对于重载的二元操作符,比如加减乘除,你只需要显示定义一个形参就行了,会自动绑定到右操作数,还有你木有定义那个构造函数啊,个人感觉还是定义一个!

热点排行