关于流操作符重载问题,总是出错,大家帮忙看看!谢谢!!

bobshi 2003-04-06 11:36:55
// complex.h
#ifndef COMPLEX_CLASSES
#define COMPLEX_CLASSES
#include <iostream>
using namespace std;

class Complex
{

public:
Complex(double x = 0.0, double y = 0.0);

Complex operator + (Complex x) const;
Complex operator - (Complex x) const;
Complex operator * (Complex x) const;
Complex operator / (Complex x) const;

Complex operator - (void) const;

double GetReal(void) const;
double GetImag(void) const;

friend ostream& operator << (ostream& ostr, const Complex& x);

double friend Distance(const Complex& a, const Complex& b);

private:
double real;
double imag;

};


#endif

//complex.cpp

#include <iostream>
#include "complex.h"
using namespace std;

Complex::Complex(double x, double y)
{
real=x;
imag=y;
}

Complex Complex::operator + (Complex x) const
{

return Complex(real+x.real, imag+x.imag);
}

Complex Complex::operator - (Complex x) const
{
return Complex(real-x.real, imag-x.imag);
}

Complex Complex::operator * (Complex x) const
{
return Complex(real*x.real-imag*x.imag,real*x.imag+imag*x.real);
}

Complex Complex::operator / (Complex x) const
{
double tempreal,tempimag;

tempreal=(real*x.real+imag*x.imag)/(x.imag*x.imag+x.real*x.real);

tempimag=(imag*x.real-real*x.imag)/(x.imag*x.imag+x.real*x.real);

return Complex(tempreal, tempimag);
}

Complex Complex::operator - (void) const
{
return Complex(-real, -imag);
}

double Complex::GetReal(void) const
{

return real;
}

double Complex::GetImag(void) const
{
return imag;
}

//提示不能访问私有成员变量imag.可是在implex.h中我已经申明为友元了。
//大家看看哪儿出错了
ostream& operator << (ostream& ostr, const Complex& x)
{
ostr << x.real << "+i(" << x.imag << ")";

return ostr;
}

double Distance(const Complex& a, const Complex& b)
{
return a.real+b.real;
}

//complextest.cpp

#include <iostream>
#include "complex.h"
using namespace std;

void main()
{
Complex c(2,3);
cout << c << endl;
}
...全文
26 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
alan118 2003-04-07
  • 打赏
  • 举报
回复
install vc 6.0 sp5
luohualiushui 2003-04-07
  • 打赏
  • 举报
回复
GZING
  • 打赏
  • 举报
回复
天啊,又是这个问题,使用的是vc6.0?
你的VC6.0没打补丁吧?
这是VC6.0老版本的一个BUG:)
解决的方法是下一个补丁,要不然:
1.不要用using namespace std;
用uisng std::cout;
using std::endl;
using std::cin;等等
2.前置声明friend函数:
#include <iostream>
using namespace std;

class Complex;
ostream& operator << (ostream& ostr, const Complex& x);
class Complex{
bobshi 2003-04-06
  • 打赏
  • 举报
回复
请问大家哪有vc 6.0的补丁下载呀

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧