[Error]invalid conversion from'int*'to'int'[-fpermissive]問題

1611 ワード

非常引用の初期値が左でなければならない最も一般的な原因は2つあります.
定数に対する参照を宣言します.たとえば、
#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をコンパイルの揺りかごの中で殺します.