我正在实现一个复杂的类作为练习,我正在查看这个文件作为指导。
在这个文件的某个地方,我发现了一个奇怪的重载运算符:
template<typename _Tp>
inline complex<_Tp>
operator+(const complex<_Tp>& __x, const _Tp& __y)
{
complex<_Tp> __r = __x;
__r.real() += __y;
return __r;
}
怎么可能使用__r.real()
as lvalue
?我试图在我的课堂上实现它,以及 的两个重载定义real()
,但当然它给了我一些错误。
有人能告诉我我错过了什么吗?
这些是函数的定义real()
和imag()
:
template<typename _Tp>
inline _Tp&
complex<_Tp>::real() { return _M_real; }
template<typename _Tp>
inline const _Tp&
complex<_Tp>::real() const { return _M_real; }
template<typename _Tp>
inline _Tp&
complex<_Tp>::imag() { return _M_imag; }
template<typename _Tp>
inline const _Tp&
complex<_Tp>::imag() const { return _M_imag; }