表达式必须具有(指针指向-)函数类型
expression must have (pointer-to-) function type
目的:此代码计算数字之间的距离(每个数字是任何城市的位置)。我编写了代码,但当我使用"算法"库中包含的"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
,也不要像全局函数那样命名局部变量
相关文章:
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 来自 DLL 的函数调用 [表观调用的括号前面的表达式必须具有(指向-)函数类型]
- 是否有任何建议来统一函数类型限定符并简化可恶的函数类型?
- 关于 C++ 中的函数类型定义
- 用于检测函数类型是否为否的特征
- 函数类型参数的模板参数推导
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- C++无效的函数类型转换
- STL 函数和函数类型与函数指针类型
- 如何将result_of与函数类型定义一起使用
- 将模板(没有规范)传递给 std::thread() 会出现错误:<未解析的重载函数类型>匹配错误
- C++ 编译错误:gnu_printf是无法识别的格式函数类型
- 专门用于"direct"函数类型(与函数指针类型相对)
- 将函数类型作为模板参数传递不会编译
- 通过参数传递 lambda(无函数类型模板)
- 如何在模板参数中分离函数类型返回类型和参数
- 为什么比较函数类型需要指定为模板参数?
- 带有限定符的函数类型定义用例
- 如何声明对函数类型的常量引用
- 非类型模板参数允许各种函数类型?