对全局变量的非常量引用的无效初始化
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
的地址,它不进行引用。
删除调用中的 &
,将传递引用。
我正在使用以下形式的库中的函数:
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
的地址,它不进行引用。
删除调用中的 &
,将传递引用。