C++ Error : initial value of reference to non-const must be an lvalue


如下这段代码,编译报错:

Error : initial value of reference to non-const must be an lvalue

#include <iostream>
using namespace std;
void test(float *&x){
    *x = 1000;
}
int main(){
    float nKByte = 100.0;
    test(&nKByte);
    cout << nKByte << " megabytes" << endl;
}

  

原因为test函数的参数是个引用, 你有可能修改这个引用本身的值(不是引用指向的那个值),这是不允许的。

所以一个修复办法为声明引用为const,这样你告诉编译器你不会修改引用本身的值(当然你可以修改引用指向的那个值)

修改版1:

void test(float * const &x){
    *x = 1000;
}

另一个更简单的修改办法是直接传递指针,

修改版2:

void test(float * x){
    *x = 1000;
}

  

reference:

http://stackoverflow.com/questions/17771406/c-initial-value-of-reference-to-non-const-must-be-an-lvalue

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM