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

关于VC++操作符重载有关问题

2012-05-20 
关于VC++操作符重载问题问一下啊大家:昨天想写一个椭圆曲线的加密算法。写到关于点的操作重载VC++编译器出

关于VC++操作符重载问题
问一下啊大家:
昨天想写一个椭圆曲线的加密算法。写到关于点的操作重载VC++编译器出现一个问题:
fatal error C1001: INTERNAL COMPILER ERROR
  (compiler file 'msc1.cpp', line 1786) 
  Please choose the Technical Support command on the Visual C++ 
  Help menu, or open the Technical Support help file for more information
执行 cl.exe 时出错.
但在linux下编译运行没错误。
我的Point类定义如下。错误在重载加法操作符那一行。
class Point{
int x;
int y;
public:
Point(int ix=0,int iy=0){
x=ix;
y=iy;
}
int getX();
int getY();
void getXY(int &ix,int &iy);
void setXY(int ix,int iy);
void setY(int iy);
friend Point Add(Point P1,Point P2); //加法
friend Point K_Point(int k,Point P); //倍数
friend Point operator+(const Point P1,const Point P2); //此行错误。。。
friend Point operator-(Point P1,Point P2); //减法
friend Point operator*(int k,Point P); //倍数。。。
friend ostream& operator<<(ostream& o,const Point& P); //这个事正确的,运行可以。。。
};
是不是我的VC坏了,如果不重新安装,如何修改呢。。。

[解决办法]
有可能是你的编译器坏了,我这VS2008毫无问题。你自己用安装程序修复下编译器把
[解决办法]

探讨

有可能是你的编译器坏了,我这VS2008毫无问题。你自己用安装程序修复下编译器把

[解决办法]
vs2010 无问题
[解决办法]
楼主用的是VC6.0吧。这个编译器不够好。友元运算符重载和using namespace std存在兼容性问题。无法同时使用。而高版本的VS就没这个问题。
解决的方法:
1:不使用using namespace std; 而单独使用using std::cout; using std::cin;之类
2: 在楼主代码的using namespace std的下面加上:
C/C++ code
class Point;Point operator+(const Point P1,const Point P2);Point operator-(Point P1,Point P2);Point operator*(int k,Point P);ostream& operator<<(ostream& o,const Point& P);
[解决办法]
TODO: Add your control notification handler code here

热点排行