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

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

2013-11-25 
运算符重载为非成员函数哪里错了啊?#include iostreamusing namespace stdclass Point{private:int x,y

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

#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
不知道,打补丁行不行。

热点排行