读书人

运算符重载为非成员函数,该怎么处理

发布时间: 2013-11-25 13:22:27 作者: rapoo

运算符重载为非成员函数
哪里错了啊?

#include <iostream>
using namespace std;
class Point{
private:
int x,y;
public:
Point(int x=0,int y=0):x(x),y(y){}
friend Point operator+(const Point &p1,const Point &p2);
void display()const;
//Point operator+(const Point &p)const;
};
Point operator+(const Point &p1,const Point &p2){
return Point(p1.x+p2.x,p1.y+p2.y);
}
/*Point Point::operator+(const Point &p)const{
return Point(x+p.x,y+p.y);
}*/
void Point::display()const{
cout<<"x:"<<x<<",y:"<<y<<endl;
}
int main()
{
Point p1(1,2),p2(3,4);
Point p3;
p3=p1+p2;
p3.display();
return 0;
}

[解决办法]
啥错误,我编译了下没问题。
[解决办法]
引用:
Quote: 引用:

啥错误,我编译了下没问题。
你用的什么编译器?

gcc和VS2012
[解决办法]
引用:
哪里错了啊?
#include <iostream>
//using namespace std; //using在这里 出错
class Point{
private:
int x,y;
public:
Point(int x=0,int y=0):x(x),y(y){}
friend Point operator+(const Point &p1,const Point &p2);
void display()const;
//Point operator+(const Point &p)const;
};
Point operator+(const Point &p1,const Point &p2){
return Point(p1.x+p2.x,p1.y+p2.y);
}
/*Point Point::operator+(const Point &p)const{
return Point(x+p.x,y+p.y);
}*/

using namespace std;//改到这里就好。
void Point::display()const{
cout<<"x:"<<x<<",y:"<<y<<endl;
}
int main()
{
Point p1(1,2),p2(3,4);
Point p3;
p3=p1+p2;
p3.display();
return 0;
}

这是VC6的bug
不知道,打补丁行不行。

读书人网 >C++

热点推荐