我知道这有点补救,但我似乎无法理解我的问题。它可能与参数中的参数有关,但我不确定。
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);
}
所有这三个功能都会出现问题。我很困惑。先谢谢你。
答案 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*&
这会失败,因为函数接受两个参数,但只传递一个参数,其余参数没有默认值。
此代码中还有许多其他问题,但这解决了有关为什么这些函数的调用无法编译的问题。