我正在尝试使用引用指针将值发送到函数中,但这给了我一个完全非显而易见的错误
#include "stdafx.h"
#include <iostream>
using namespace std;
void test(float *&x){
*x = 1000;
}
int main(){
float nKByte = 100.0;
test(&nKByte);
cout << nKByte << " megabytes" << endl;
cin.get();
}
错误:对非常量的引用的初始值必须为左值
我不知道该如何修复以上代码,有人可以给我一些有关如何修复该代码的想法吗?谢谢 :)
最佳答案
当您通过非const
引用传递指针时,您将告诉编译器您将要修改该指针的值。您的代码没有这样做,但是编译器认为它可以这样做,或者计划在将来这样做。
要解决此错误,请声明x
常量
// This tells the compiler that you are not planning to modify the pointer
// passed by reference
void test(float * const &x){
*x = 1000;
}
或在调用
nKByte
之前,为您分配一个指向test
的指针的变量:float nKByte = 100.0;
// If "test()" decides to modify `x`, the modification will be reflected in nKBytePtr
float *nKBytePtr = &nKByte;
test(nKBytePtr);