帮忙看下这个c++程序哪里错了

2025-02-25 12:06:32
推荐回答(5个)
回答1:

vc++6.0采用的非标准,不支持重载函数做友元,即friend ostream& operator <<(ostream &,Complex &)此句实际上是无效的。
改正方法就是用替代,并删去using namespace std;
就ok了。
或者不改动程序,使用支持标准c++的编译器,如VC++.NET(visual studio 2005/2008)

代码如下:
#include

class Complex
{
public:
Complex(float r,float i):real(r),imag(i){}
Complex(){}
float real;
float imag;
friend ostream& operator <<(ostream &,Complex &);
};
Complex operator + (Complex &a,Complex &b)
{
return Complex(a.real+b.real,a.imag+b.imag);
}
ostream& operator <<(ostream &output,Complex &a)
{
output< if(a.imag>0) output<<"+";
output< return output;
}
int main()
{
Complex a(1,0.5),b(3,0.2);
cout< // getchar(); vc6不需要这句话来暂停屏幕,vc.net需要
return 0;
}

回答2:

C++不会哦,你去找一些专业的C++群去啊,不过现在C++的不多了C#和Java还差不多会有很多人给你解答!

回答3:

Complex(a.real+b.real,a.imag+b.imag);这个定义了吗,怎么没有找到。

回答4:

VC++6.0上编译运行正常啊,
运行结果为:
4+0.7i

回答5:

修改后代码:
#include
using namespace std;
class Complex
{
public:
Complex(float r,float i):real(r),imag(i){}
Complex(){}
float real;
float imag;
friend ostream& operator <<(ostream &,Complex &);
friend ostream& operator <<(ostream &output,Complex &a)
{
output< if(a.imag>0) output<<"+";
output< return output;
}
};
Complex operator + (Complex &a,Complex &b)
{
return Complex(a.real+b.real,a.imag+b.imag);
}

int main()
{
Complex a(1,0.5),b(3,0.2),c;
cout< getchar();
}
我对ostream& operator <<(ostream &output,Complex &a)修改了下就OK了