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

 

posted @ 2014-12-04 08:38  MindProbe  阅读(5577)  评论(0编辑  收藏  举报