c ++ errors ::没有用于调用'函数的匹配函数'

时间:2014-09-08 23:07:36

标签: c++ function compiler-errors

我知道这有点补救,但我似乎无法理解我的问题。它可能与参数中的参数有关,但我不确定。

void Input (int **&x, int *&arr, int &size1,int &size2, int a, int b)
{

    cout << "Please enter 2 non-negative integer values: "<< endl;
    cout << "1. ";
    cin >> size1;
    int checkVal(int size1, int a);
    cout << "2. ";
    cin >> size2;
    int checkVal(int size2, int b);

    void putArr(int **&x,const int &size1,const int &size2);

    arr[0] = size1;
    arr[1] = size2;

}


int checkVal (int &size, int x)
{
    do{
    if (size < 0)
        cout << size << " is not a non-negative integer. Re-enter --> " << x << ". ";
        cin >> size;
    }while(size < 0);

    return size;

}



void summation(int ***&y, int *&arr)
{
    int *size = new int;

    *size = **y[0] + **y[1];
    y[2] = new int *(size);

    *(arr + 2) = *size;

    delete size;

}

int main()
{
    int size, size1, size2;
    int a = 1, b = 2;

    int** x;
    int*** y;
    int** q;
    int**** z;

    int *arr[2];

    allocArr(x, y, q, z);
    Input(x, arr, size1, size2, a, b);
    checkVal(size);
    putArr(x, size1, size2);
    summation(y, arr);
    display(z);


}

所有这三个功能都会出现问题。我很困惑。先谢谢你。

2 个答案:

答案 0 :(得分:2)

没有提到具有未知目的的明星,你在几个地方都有这样的代码:

cin >> size1;
int checkVal(int size1, int a);
cout << "2. ";

在此声明函数checkVal,而不是调用它。在这种特殊情况下,我相信它应该被替换为

cin >> size1;
cout << "2. " << checkVal(size1, a);

(假设您提供了正确类型的参数)

答案 1 :(得分:0)

Input(x, arr, size1, size2, a, b);
// ...
summation(y, arr);

这两种情况中的问题是第二个参数arr。它的类型为int*[](指向int的指针数组),它可以衰减为类型int**(指向int的指针),但此类型与参数类型{{1}不兼容(引用指向int的指针)。

int*&

这会失败,因为函数接受两个参数,但只传递一个参数,其余参数没有默认值。

此代码中还有许多其他问题,但这解决了有关为什么这些函数的调用无法编译的问题。