invalid initialization of non-const reference of type ‘xxx&’ from an rvalue of type ‘xxx’
4466 ワード
これは私がc++を学ぶ过程の中でかつて出会った1本のLinux环境の下のコンパイルの间违いは最初この间违いの意味が何なのか分からないで、debugは半日も出ていないで、ネット上で百篇を読んで、やっとこの间违いの意味を知って、すぐにバグを探し出しました.そのため、このエラーメッセージを直接タイトルとして、後で検索して調べることができます.このエラーの中国語の意味は、非常に引用された初期値は左値(vsのエラー) でなければならない.最も一般的な原因は2つあります: 定数に対する参照を宣言します.たとえば、
解決策
引数が非常に多い参照タイプの関数に定数タイプを入力します.たとえば、
また
解決策はすべてパラメータの前にconstキーワードを追加します
だから、コードを書いてconstを手当たり次第に加えるのは良い習慣で、bugをコンパイルの揺りかごの中で殺します.
#include
using namespace std;
int main()
{
int& i = 10;// vs :
/* Linux invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’*/
return 0;
}
解決策
#include
using namespace std;
int main()
{
int x = 10;
int& i = x;
return 0;
}
引数が非常に多い参照タイプの関数に定数タイプを入力します.たとえば、
#include
using namespace std;
void fun(int& i)
{
cout << i;
}
int main()
{
fun(1);// vs :
/* Linux invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int’*/
return 0;
}
また
#include
#include
using namespace std;
void fun(string& i)
{
cout << i;
}
int main()
{
fun("str");// vs :
/* Linux invalid initialization of non-const reference of type ‘string&’ from an rvalue of type ‘string’*/
return 0;
}
解決策はすべてパラメータの前にconstキーワードを追加します
#include
#include
using namespace std;
void fun(const int& i)
{
cout << i;
}
int main()
{
fun(1);
return 0;
}
#include
#include
using namespace std;
void fun(const string& i)
{
cout << i;
}
int main()
{
fun("str");
return 0;
}
だから、コードを書いてconstを手当たり次第に加えるのは良い習慣で、bugをコンパイルの揺りかごの中で殺します.