关于流操作符重载问题,总是出错,大家帮忙看看!谢谢!!
// 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;
}