![]() |
#2
peach54602013-08-05 08:10
|

#include <iostream>
#include <iterator>
using namespace std;
template <typename T>
class complex
{
public:
//complex(){real = 0;imag = 0;}
complex(T oreal,T oimag)
{
real = oreal;
imag = oimag;
}
//template<typename T2>
complex operator+ (complex<T> c2)
{
c2.real=real+c2.real;
c2.imag=imag+c2.imag;
return c2;
}
public:
inline T getReal(){return real;}
inline T getImag(){return imag;}
private:
T real;
T imag;
};
namespace std
{
template <typename T2>
std::ostream& operator<< (std::ostream& os, const complex <T2> c)
{
return os<<c.getReal()<<"+"<<c.getImag()<<"i";
}
}
int main()
{
complex<float> a(10,5);
complex<float> b(2.2,6.0);
complex<float> c=a+b;
cout<<c<<"\n";
return 0;
}
报错信息:
return os<<c.getReal()<<"+"<<c.getImag()<<"i"; discards qualifers
去掉const 就能执行,不去掉const就执行不了,求大神分析,对const的理解还不够好。