operator+= 重载的问题吧!在线等
#include <iostream>
#include <complex>
using namespace std;
inline complex <double> &
operator+=( complex <double> &cval, double dval )
{
return cval += complex <double> (dval);
}
inline complex <double> &
operator-=( complex <double> &cval, double dval )
{
return cval -=complex <double> (dval);
}
inline complex <double> &
operator/=( complex <double> &cval, double dval )
{
return cval /=complex <double> (dval);
}
inline complex <double> &
operator*=( complex <double> &cval, double dval )
{
return cval *=complex <double> (dval);
}
int main()
{
using namespace std;
complex <double> cval(4.0, 1.0);
cout < <cval < <endl;
cval+=1;
cout < <cval < <endl;
cval-=1;
cout < <cval < <endl;
cval*=1;
cout < <cval < <endl;
cval/=1;
cout < <cval < <endl;
return 0;
}
VS运行出现错误如下:只贴出一个,其他3个雷同,
:\program_shou\3166\3166\dwfe.cpp(31) : error C2593: “operator +=”不明确
d:\205_zhyeb\vc\include\complex(686): 可能是“std::complex <double> ::_Myt &std::complex <double> ::operator +=(const std::complex <double> ::_Ty &)”
d:\program_shou\3166\3166\dwfe.cpp(6): 或“std::complex <double> &operator +=(std::complex <double> &,double)”
试图匹配参数列表“(std::complex <double> , int)”时
在VC运行 完全正常通过。
请问大家这是为什么哈!~解释清楚点~!
[解决办法]
complex& operator+=(const T& rhs);
complex& operator-=(const T& rhs);
complex& operator*=(const T& rhs);
complex& operator/=(const T& rhs);
看见这几个没有,const的话,如果不是指针或引用的话,是不参与重载的