繁体   English   中英

在Objective-C ++中对“ abs”的调用不明确

[英]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可能有两个原因。

  1. 函数调用中的参数与任何函数声明中的参数都不匹配。

    我希望数组toValuespreviousValues具有相同的类型。 在这种情况下,请检查值toValues[idx] - previousValues[idx]是否具有abs()允许作为参数的类型。 根据C ++ 11标准,允许的值为intlong intlong long int

    也许您可以将toValues[idx] - previousValues[idx]的值toValues[idx] - previousValues[idx]为整数或其他允许的类型,以排除这种情况,如下所示:

    (int)toValues[idx] - previousValues[idx]

  2. 多次定义同一功能

    abs()是一个大量重载的函数。 您可以使用多个头文件检查代码中是否多次包含了它。 例如,包含math.h和cmath.h将导致重复的abs()函数,这将导致歧义。 但是,这样包含标头没有任何意义。 相反,这种包含是偶然的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM