我正在为一个赋值编写一个Complex
类,其中一个方法应该在向复数中添加double时重载默认的加法运算符。
到目前为止,我有以下代码正确适用于c+5
,其中c
是Complex
个对象
Complex& Complex::operator+(const double& d) const
{
return Complex(real + d, imag);
}
然而,当我5+c
时,它并不喜欢它。我想这可能是因为前缀修复后的事情,但我不确定。
我的问题是,是否有办法让+
运算符超载,以便我可以执行5+c
之类的操作。我尝试在线搜索解决方案,但我能找到的唯一答案是处理增量/减量运算符,你只需要为post-fix添加一个int参数。我为+
尝试了同样的事情,但它没有用。
非常感谢。
答案 0 :(得分:2)
有两种选择:
1)实现两个非成员函数:
Complex operator+(const Complex& lhs, double rhs);
Complex operator+(double lhs, const Complex& rhs);
2)从Complex
隐式构建double
(如果它还没有),并实现一个非限制:
Complex operator+(const Complex& lhs, const Complex& rhs);