函数未在此范围内声明?

时间:2015-03-07 03:36:15

标签: c++

所以这是我的代码。它告诉我,当我在kSmall中调用它时,没有声明分区......有什么想法吗?

int kSmall(int A[], int k, int low, int high){
    int pivot = A[(low+high)/2];
    int idx = partition(A, pivot, low, high);
    if(idx-low+1>k)
        kSmall(A,k,low,idx-1);
    else if(idx-low+1<k)
        kSmall(A,k,idx+1,high);
    else
        return A[idx];
}

int partition(int A[], int p, int low, int high){
    int temp;
    int left = low;
    int right = high;
    while (left < right){
        while (A[left]<p)
            left++;
        while (A[right]>p)
            right--;
        if (left<right){
            temp = A[left];
            A[left] = A[right];
            A[right] = temp;
            }
    }
    return left;
}

确切的错误是:main.cpp:36:43:错误:'partFunc'未在此范围内声明

2 个答案:

答案 0 :(得分:0)

如果在cpp文件中的kSmall()之前定义partition(),则将解决main.cpp问题。

答案 1 :(得分:0)

您必须在调用它的函数之前声明函数partition()

只需添加以下行:

int partition(int[], int, int , int );
kSmall之前

。这是因为kSmall()调用partition(),它会产生错误,因为之前没有partition()函数,所以你可以在它之前定义函数,或者只是提供一个原型。