表达式必须具有(指针指向-)函数类型

expression must have (pointer-to-) function type

本文关键字:函数 类型 指针 表达式      更新时间:2023-10-16

目的:此代码计算数字之间的距离(每个数字是任何城市的位置)。我编写了代码,但当我使用"算法"库中包含的"min"函数时,"表达式必须具有(指针指向-)函数类型"将发生错误。

是一个代码:

    #include<iostream>
#include<algorithm>
using namespace std;
int main(){
    int noc, ele, min, max,arr[100];
    cin >> noc;
    for(int i = 0;i < noc;i++)
        cin >> arr[i];

    for(int i = 0;i < noc;i++){
        if(i == 0)
            cout << abs(arr[0] - arr[1]) << "  " << abs(arr[0] - arr[noc - 1]) << endl;
        else if(i == noc - 1)
            cout << abs(arr[noc - 1] - arr[noc - 2]) << "  " << abs(arr[noc - 1] - arr[0]);
        else{
            min(4 ,5 ,6);
        }
    }
    return 0;
}

有两个问题:

名为min的变量遮蔽了std命名空间中的函数。正是由于这个原因,你通常不应该写using namespace std;

std::min不需要三个参数来返回最小的,只需要两个。你可以链式调用它,或者在c++ 11中,你可以使用初始化列表重载:

std::min(std::min(4,5),6);
//or
std::min({4,5,6});

您还使用min作为变量名,并且由于您已经将std名称空间中的所有符号与using namespace std一起放在全局名称空间中,因此您认为可以使用min而无需使用std::作为前缀。但是因为还有一个局部变量min,所以它具有优先级。

tldr:不要使用using namespace std,也不要像全局函数那样命名局部变量