这是我尝试编译的代码的片段,其中在编译器的错误列表中,我有一个错误,它处理了这部分代码
Complex Complex::compute(Complex c, std::function<double(double, double)> &f)
{
re = f(re, c.re);
im = f(im, c.im);
return *this;
}
Complex Complex::operator+(const Complex &c)
{
return compute(c, [](double x, double y) {return x + y; });
}
基本上,编译器会说:“对非const的引用的初始值必须是左值”
此错误出现在此代码段的最后一行中,因为我发送的此函数应作为参考发送,我想这是处理它的问题,但我看不出这里有什么问题。任何帮助表示赞赏!
编辑:
我想我想出了错误的问题所在,但是我想知道代码最后一行中的第一个参数。
我们可以看到c作为const引用发送到operator +方法,但是随后我调用了方法compute并将c作为参数发送,现在,在这种情况下c是通过值或引用传递的,因为在operator +内部方法,它是一个引用,但是当我在这种情况下将引用传递给另一个方法时会发生什么?