C++ 错误C2664:&x27;方式';:无法将参数4从';int';至';国际及';

C++ 错误C2664:&x27;方式';:无法将参数4从';int';至';国际及';,c++,C++,我的代码有问题 这是我的主要任务 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, minWa

我的代码有问题

这是我的主要任务

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;
}
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;
如果(x<0 | | y<0 | | x>10 | | y>10)
返回;
// Сравнява намерения път с минималния
如果(x==xG&&y==xG)
{
登记通道(crrWay、l+1、minWay、minWayN、crrWayWeight、minWayWeight);
返回;
}
// Клетката е непроходима.
if(tempMaze[x][y]==0)
返回;
tempMaze[x][y]=0;
重量+=迷宫[x][y];
// Рекурсивни обръщения към всеки от четирите съседа
路径(x+1,y,crrWay,crrWayWeight,l+1,minWay,minWayN,minWayWeight);
方式(x,y+1,crrWay,crrWayWeight,l+1,minWay,minWayN,minWayWeight);
通道(x-1,y,crrWay,crrWayWeight,l+1,minWay,minWayN,minWayWeight);
通道(x,y-1,crrWay,crrWayWeight,l+1,minWay,minWayN,minWayWeight);
// връщане назад
tempMaze[x][y]=1;
}
代码无法编译。上面说

1> c:\users\admin\documents\zad51.cpp(102):错误C2664:“方式”:无法 将参数4从“int”转换为“int&”


您的
方法
函数采用非常量引用
int&
,并且您正在传递临时值,例如
0
。非常量引用不能绑定到临时引用。您需要更改签名以获取常量引用,或者,如果函数实际上改变了引用的int,则不传递临时值

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


您的
方法
函数采用非常量引用
int&
,并且您正在传递临时值,例如
0
。非常量引用不能绑定到临时引用。您需要更改签名以获取常量引用,或者,如果函数实际上改变了引用的int,则不传递临时值

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


way
函数将对整数的引用作为其第四个参数。不能传递文本(也称为右值)。对对象的引用始终是左值或变量。您应该做的是生成一个变量并将其传递给函数调用。

函数的
方式将对整数的引用作为其第四个参数。不能传递文本(也称为右值)。对对象的引用始终是左值或变量。您应该做的是生成一个变量并将其传递给函数调用。

因为您尝试将常量文本作为第四个参数传递。将其分配给变量,即:

int variable = 0;
way(x, y, crrWay, variable, 0, minWay, minWayN, 0);

因为您试图将常量文本作为第四个参数传递。将其分配给变量,即:

int variable = 0;
way(x, y, crrWay, variable, 0, minWay, minWayN, 0);

为什么您可以传入一个文本作为引用?这毫无意义。为什么你可以传递一个文本作为引用?没道理,快告诉我。我想剩下的唯一选择是+1!他不能将签名更改为常量引用,因为crrWayWeight在函数中被修改。请告诉我。我想剩下的唯一选择是+1!他不能更改签名以获取常量引用,因为crrWayWeight在函数中被修改。