我正在使用以下形式的库中的函数:
void run(double in, double &out);
我无法更改此函数,我需要将"输出"传递给不同类中的许多不同函数。由于我需要在整个程序中访问它,通常在创建类实例不方便时,我想将全局双精度传入"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*’
我对引用、指针和左值/右值有点不稳定,所以请给我一个简单的答案,为什么我不能这样做,以及如何实现我的目标,即为"out"分配值并在整个程序中使用它。
在main
中,您正在使用第二个参数是指向双精度的指针调用run
。在这种情况下,&
运算符采用outputDouble
的地址,它不做引用。
删除呼叫上的&
,将传递引用。