[英]Call to 'abs' is ambiguous in Objective-C++
我在此代码段中有问题,它给call to 'abs' is ambiguous
的错误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]
的值toValues[idx] - previousValues[idx]
为整数或其他允许的类型,以排除这种情况,如下所示:
(int)toValues[idx] - previousValues[idx]
多次定义同一功能
abs()是一个大量重载的函数。 您可以使用多个头文件检查代码中是否多次包含了它。 例如,包含math.h和cmath.h将导致重复的abs()函数,这将导致歧义。 但是,这样包含标头没有任何意义。 相反,这种包含是偶然的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.