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