哪里出错了 我不懂啊

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

complex operator +(int &i,complex &c)
{
return complex(i+c.real,c.imag)
}

改成 complex complex::operator +(int &i,complex &c)
{
return complex(i+c.real,c.imag)
}

看来楼主也是用VC6啊,这是VC6在重载操作符方面的BUG,需要在类的定义前面加上预声明
class complex;
complex operator+(int &i,complex &c);