我在这段代码中遇到问题。当我打电话给功能。编译器显示此错误:
"函数调用中的参数太少" .................................................. ..........
bool check_matrix(int x, int y){
if (x<ROWS || y<COLUMNS)
return true;
return false;
}
bool compute_duplicate(int x, int y, int array[], int array_length){
for (int i=0; i< array_length; i++)
{
if(array[i]==compute_address(x,y))
return false;
}
return true;
}
////////////////////////////////////
for (int i=0; i<array_length; i++){
if ((check_matrix(x,(y+1))==true) && compute_duplicate((x,(y+1), array, array_length)==false)) {
array[i]= compute_address(x,(y+1));
y++;
d++;
i++;
}
if ((check_matrix((x+1),y)==true) && compute_duplicate((x+1),y, array, array_length)==false)) {
array[i]=compute_address((x+1),y);
x++;
d++;
i++;
}
array_length=d;
}
答案 0 :(得分:2)
以下函数调用具有错位的括号
compute_duplicate((x,(y+1), array, array_length)==false)
应该是
(compute_duplicate(x,(y+1), array, array_length)==false)
在循环中的两个位置存在相同的错误。
答案 1 :(得分:1)
你的问题在这里:
compute_duplicate((x,(y+1), array, array_length)==false))
即。您尝试使用一个类型为compute_duplicate
的参数调用bool
,这是有效表达式 (x,(y+1), array, array_length)==false
的结果。请注意,逗号是C / C ++中的运算符,因此上面表达式的有效结果为array_length==false
。
可能意味着:
compute_duplicate(x,(y+1), array, array_length)==false
答案 2 :(得分:1)
compute_duplicate((x,(y+1), array, array_length)==false))
在compute_duplicate
表达式上调用(x,(y+1), array, array_length)==false)
,当{且仅当true
为{{1}时,这是一个(x,(y+1), array, array_length)
的布尔值}}。这不是你想要的。
答案 3 :(得分:1)
这里还有一对括号:
compute_duplicate((x,(y+1), array, array_length)==false)
使编译器认为您传递一个bool作为参数。松开它们,错误应该修复。
答案 4 :(得分:1)
compute_duplicate((x,(y+1), array, array_length)==false)
使用一个参数调用compute_duplicate
,结果为(x,(y+1), array, array_length)==false
。
您的意思是(compute_duplicate(x,(y+1), array, array_length)==false)
吗?
(()
只是略有不同的排列,但却是一个非常不同的C ++。