1

コードに問題があります。

これが私のメインです。

int main()
{
    cin>>xG>>yG;
    int x,y;
    cin>>x>>y;
    int crrWay[200] = {0},
        minWay[200] = {0},
        minWayN = -1;
    way(x, y, crrWay, 0, 0, minWay, minWayN, 0);
    printWay(minWay, minWayN);
    return 0;
}

これが関数です。

void way(int x, int y, int *crrWay, int& crrWayWeight, int l, int* minWay, int& minWayN, int& minWayWeight)
{
    crrWay[2*l] = x;
    crrWay[2*l+1] = y;

    if( x < 0 || y < 0 || x > 10 || y > 10 )
        return;

    // Сравнява намерения път с минималния
    if(x == xG && y == xG)
    {
        registerWay(crrWay, l+1, minWay, minWayN, crrWayWeight, minWayWeight);
        return;
    }

    // Клетката е непроходима.
    if(tempMaze[x][y]==0)
        return;
    tempMaze[x][y] = 0;
    crrWayWeight+=maze[x][y];

    // Рекурсивни обръщения към всеки от четирите съседа
    way(x+1, y, crrWay, crrWayWeight, l+1, minWay, minWayN, minWayWeight);
    way(x, y+1, crrWay, crrWayWeight, l+1, minWay, minWayN, minWayWeight);
    way(x-1, y, crrWay, crrWayWeight, l+1, minWay, minWayN, minWayWeight);
    way(x, y-1, crrWay, crrWayWeight, l+1, minWay, minWayN, minWayWeight);

    // връщане назад
    tempMaze[x][y] = 1;
}

コードをコンパイルできません。それは言う

1>c:\users\admin\documents\zad51.cpp(102): エラー C2664: 'way': パラメーター 4 を 'int' から 'int &' に変換できません

4

3 に答える 3

5

あなたのway関数は const 以外の参照を取りint&、 などの一時的なものを渡してい0ます。非 const 参照は一時変数にバインドできません。const 参照を取るように署名を変更する必要があります。または、関数が参照される int を実際に変更する場合は、一時変数を渡さないでください。

void way(int x, int y, int *crrWay, const int& crrWayWeight, int l, int* minWay, const int& minWayN, const int& minWayWeight);

また

int a = 0;
int b = 0;
int c = 0;
way(x, y, crrWay, a, b, minWay, minWayN, c);
于 2013-01-15T22:32:28.580 に答える
1

このway関数は、4 番目の引数として整数への参照を取ります。リテラル (右辺値) を渡すことはできません。オブジェクトへの参照は、常に左辺値または変数です。あなたがすべきことは、変数を作成し、代わりにそれを関数呼び出しに渡すことです。

于 2013-01-15T22:32:59.653 に答える
1

4 番目の引数として定数リテラルを渡そうとするためです。それを変数に割り当てます。

int variable = 0;
way(x, y, crrWay, variable, 0, minWay, minWayN, 0);
于 2013-01-15T22:33:46.670 に答える