对 'abs' 的调用在 Objective-C++ 中不明确
Call to 'abs' is ambiguous in Objective-C++
我在这段代码中遇到了问题,它给出了错误 call to 'abs' is ambiguous
。
for (NSUInteger idx = 0; idx < count; idx++) {
if ((std::abs(toValues[idx] - previousValues[idx]) >= t) || (std::abs(previous2Values[idx] - previousValues[idx]) >= t)) {
return false;
}
return true;
}
call to some_function() is ambiguous
.
有两个可能的原因
函数调用中的参数与任何函数中的参数都不匹配
声明.
我希望数组 toValues
和 previousValues
是同一类型。在这种情况下,检查值 toValues[idx] - previousValues[idx]
是否属于 abs() 允许作为参数的类型。根据 C++11 标准,允许的值为 int、long int 和 long long int。
也许您可以将 toValues[idx] - previousValues[idx]
的值转换为整数或其他允许的类型,以排除如下原因:
(int)toValues[idx] - previousValues[idx]
同一个函数定义了多次
abs() 是一个大量重载的函数。您可以使用多个 header 文件检查它是否多次包含在您的代码中。例如,包含 math.h 和 cmath.h 将导致重复的 abs() 函数,这将导致歧义。但是,这样包含 headers 没有任何意义。而是这样的包含是偶然的。
我在这段代码中遇到了问题,它给出了错误 call to 'abs' is ambiguous
。
for (NSUInteger idx = 0; idx < count; idx++) {
if ((std::abs(toValues[idx] - previousValues[idx]) >= t) || (std::abs(previous2Values[idx] - previousValues[idx]) >= t)) {
return false;
}
return true;
}
call to some_function() is ambiguous
.
函数调用中的参数与任何函数中的参数都不匹配 声明.
我希望数组toValues
和previousValues
是同一类型。在这种情况下,检查值toValues[idx] - previousValues[idx]
是否属于 abs() 允许作为参数的类型。根据 C++11 标准,允许的值为 int、long int 和 long long int。
也许您可以将toValues[idx] - previousValues[idx]
的值转换为整数或其他允许的类型,以排除如下原因:(int)toValues[idx] - previousValues[idx]
同一个函数定义了多次
abs() 是一个大量重载的函数。您可以使用多个 header 文件检查它是否多次包含在您的代码中。例如,包含 math.h 和 cmath.h 将导致重复的 abs() 函数,这将导致歧义。但是,这样包含 headers 没有任何意义。而是这样的包含是偶然的。