c++运算符重载的问题,急~~~

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:18:43
#include<iostream>
using namespace std;
class complex
{
public:
friend ostream& operator <<(ostream&,complex &);
friend istream& operator >>(istream&,complex &);
private:
double real;
double imag;
};
ostream& operator <<(ostream&output,complex &c)
{
output<<"("<<c.real<<"+"<<c.imag<<")";
return output;
}
istream& operator >>(istream&input,complex &c)
{
input>>c.real>>c.imag;
}
int main()
{
complex com1,com2;
cin>>com1>>com2;
cout<<"c1="<<com1<<endl;
cout<<"c2="<<com2<<endl;
return 0;
}

E:\源文件\课后习题\1\num1.cpp(14) : error C2248: 'real' : cannot access private member declared in class 'complex'
E:\源文件\课后习题\1

改头文件为<include iostream.h>,其他为上两位的回答

istream& operator >>(istream&input,complex &c)
{
input>>c.real>>c.imag; //少了一句return input;
}

你用得是什么编译器啊?如果是v c++ 6.0打个SP6补丁试试,网上搜下大把多

我用的是vs2008

istream& operator >>(istream&input,complex &c)
{
input>>c.real>>c.imag;
}
中加一句 return input;
其他就啥毛病也没有了;

外加删除using namespace std;