c++这个代码那里错了

来源:百度知道 编辑:UC知道 时间:2024/06/25 07:11:14
#include <iostream>
using namespace std;
class Complex
{public:
Complex(){real=0;imag=0;}
Complex(double r){real=r;imag=0;}
Complex(double r,double i)
{real=r;imag=i;}
friend Complex operator+ (Complex &c1, Complex &c2);
void display();
private:
double real; double imag;
};
Complex operator+ (Complex &c1,Complex &c2)
{return Complex(c1.real+c2.real, c1.imag+c2.imag);}
void Complex::display()
{cout<<"("<<real<<","<<imag<<"i)"<<endl;}
int main()
{ Complex c1(3,4),c2(5,-10),c3;
c3=c1+c2;
cout<<"c1="; c1.display();
cout<<"c2="; c2.display();
cout<<"c1+c2="; c3.display();
return 0;
}

运行总说有错误:
fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', lin

程序正常,我在vc6.0+sp5补丁下没问题,你试试不用命名空间,改成加。h看下。

不是程序的问题,
INTERNAL COMPILER ERROR
编译程序的问题,估计是编译程序版本和头文件版本不一致。。。

貌似你用的是vc6.0,把包含文件改成这样就行了
呵呵,我是听了二楼然后照做的(呵呵,要就把分给二楼吧)
我在vc6.0中的问题和你一样,改成下面这样就能编译通过了

#include <iostream.h>

class Complex
{public:
Complex(){real=0;imag=0;}
Complex(double r){real=r;imag=0;}
Complex(double r,double i)
{real=r;imag=i;}

friend Complex operator+ (Complex &c1, Complex &c2);
void display();
private:
double real; double imag;
};
Complex operator+ (Complex &c1,Complex &c2)
{return Complex(c1.real+c2.real, c1.imag+c2.imag);}
void Complex::display()
{cout<<"("<<real<<","<<imag<<"i)"<<endl;}
int main()
{ Complex c1(3,4),c2(5,-10),c3;
c3=c1+c2;
cout<<"c1="; c1.display();
cout<<"c2="; c2.display();