对全局变量的非常量引用的无效初始化

invalid initialization of non-const reference to global variable

我正在使用以下形式的库中的函数:

void run(double in, double &out);

我无法更改此函数,我需要将 "out" 传递给不同 class 中的许多不同函数。由于我需要在整个程序中访问它,通常在不方便创建 class 实例时,我想为 "out." 传递一个全局双精度值但是,当我尝试以下操作时,

#include <iostream>

double inputDouble = 3;
double outputDouble;

void run(double in, double &out)
{
    out = in + 5;
}

int main()
{
    run(inputDouble, &outputDouble);
    std::cout << outputDouble << std::endl;
    return 0;
}

我收到以下错误:

error: invalid initialization of non-const reference of type ‘double&’ from an rvalue of type ‘double*’

我对引用、指针和 lvalue/rvalues 有点犹豫不决,所以请给我一个简单的答案,说明为什么我不能这样做,以及我如何才能实现为"out" 并在整个程序中使用它。

在您的 main 中,您正在调用 run,第二个参数是要加倍的 指针 。本例中的 & 运算符采用 outputDouble 的地址,它不进行引用。

删除调用中的 &,将传递引用。