C ++:函数调用中的参数太少

时间:2013-04-09 07:07:50

标签: c++

我在这段代码中遇到问题。当我打电话给功能。编译器显示此错误:

"函数调用中的参数太少" .................................................. ..........

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;
}

5 个答案:

答案 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 ++。