引用作为方法的参数

时间:2018-12-03 14:19:39

标签: c++

这是我尝试编译的代码的片段,其中在编译器的错误列表中,我有一个错误,它处理了这部分代码

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 +内部方法,它是一个引用,但是当我在这种情况下将引用传递给另一个方法时会发生什么?

0 个答案:

没有答案