Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;用于加法(+;)的预修复和后修复运算符重载(不是+;+;或--)_C++ - Fatal编程技术网

C++ C++;用于加法(+;)的预修复和后修复运算符重载(不是+;+;或--)

C++ C++;用于加法(+;)的预修复和后修复运算符重载(不是+;+;或--),c++,C++,我正在为一个赋值编写一个Complex类,其中一个方法在向复数添加一个double时应该重载默认的加法运算符。 到目前为止,我有以下代码可以正确地用于c+5,其中c是一些复杂的对象 Complex& Complex::operator+(const double& d) const { return Complex(real + d, imag); } 但是,它不喜欢我做5+c。我想这可能是因为前缀后修复的事情,但我不确定 我的问题是,是否有一种方法也可以重载+操作符,

我正在为一个赋值编写一个
Complex
类,其中一个方法在向复数添加一个double时应该重载默认的加法运算符。 到目前为止,我有以下代码可以正确地用于
c+5
,其中
c
是一些
复杂的
对象

Complex& Complex::operator+(const double& d) const
{
    return Complex(real + d, imag);
}
但是,它不喜欢我做
5+c
。我想这可能是因为前缀后修复的事情,但我不确定

我的问题是,是否有一种方法也可以重载
+
操作符,以便我可以执行类似
5+c
的操作。我试着在网上搜索解决方案,但我能找到的唯一答案是递增/递减运算符,在这里,您只需为post fix添加一个int参数。我在
+
上尝试了同样的方法,但没有效果


非常感谢。

我想到两个选项:

1) 实现两个非成员功能:

Complex operator+(const Complex& lhs, double rhs);
Complex operator+(double lhs, const Complex& rhs);
2) 使
复杂
可以从
double
隐式构造(如果还没有),并实现单个非menber:

Complex operator+(const Complex& lhs, const Complex& rhs);

将其设置为独立运算符(如果类需要,请定义外部,如果需要,请将其设置为
朋友
)。在链接副本中,向下滚动到我看到的“二进制算术运算符”。是否没有成员功能选项?非常感谢您的光临way@sshashank124不太可能,因为成员具有类型为
Complex
的隐式第一个参数。