Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:重载“abs(double)”的调用不明确_C++ - Fatal编程技术网

C++ 错误:重载“abs(double)”的调用不明确

C++ 错误:重载“abs(double)”的调用不明确,c++,C++,我一直在寻找答案,但找不到一个符合我的简单情况的答案 abs究竟为什么只对整数起作用?我不能做这个手术 // Example program #include <iostream> using namespace std; int main() { float someVariable = abs(-4.22); cout << someVariable; } 注意,我正在使用来测试它。您需要包括数学库,如下所示: #include <cmat

我一直在寻找答案,但找不到一个符合我的简单情况的答案

abs究竟为什么只对整数起作用?我不能做这个手术

// Example program
#include <iostream>

using namespace std;

int main()
{
    float someVariable = abs(-4.22);
    cout << someVariable;
}

注意,我正在使用来测试它。

您需要包括数学库,如下所示:

#include <cmath>

您需要包括数学库,如下所示:

#include <cmath>

abs有不同的实现方式,具体取决于它是如何包含的

要获得浮点值,则需要

#include <cmath>
结果程序

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    float someVariable = abs(-4.22);
    cout << someVariable;
}

参考

abs有不同的实现方式,具体取决于其包含方式

要获得浮点值,则需要

#include <cmath>
结果程序

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    float someVariable = abs(-4.22);
    cout << someVariable;
}
参考标准:abs采用以下任何一种:

长的 长长的 双重的 长双人 但是,在C++17之前,除非包含,否则只有前三个列出的整数重载可用。您正在传递一个浮点值,它可以很好地转换为任意三个浮点值,因此编译器无法判断您想要哪一个

如果您确实想要整数重载,您可以使用强制转换为int,long或long,视情况而定

但您不需要:您希望触发浮点重载,因此使用include将其引入范围,然后应该自动拾取它,因为您正在传递浮点

事实上,事实上,即使整数重载也是可用的,这让你很幸运,因为你从来没有包括在内;你的工具链一定是碰巧为你做的。始终根据文档包含正确的标题。

std::abs采用以下任何一种:

长的 长长的 双重的 长双人 但是,在C++17之前,除非包含,否则只有前三个列出的整数重载可用。您正在传递一个浮点值,它可以很好地转换为任意三个浮点值,因此编译器无法判断您想要哪一个

如果您确实想要整数重载,您可以使用强制转换为int,long或long,视情况而定

但您不需要:您希望触发浮点重载,因此使用include将其引入范围,然后应该自动拾取它,因为您正在传递浮点


事实上,事实上,即使整数重载也是可用的,这让你很幸运,因为你从来没有包括在内;你的工具链一定是碰巧为你做的。始终根据文档包含正确的标题。

abs在cmath标题中声明。因此,如果您想使用abs,您需要在代码中包含cmath,如下所示:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    float someVariable = abs(-4.22);
    cout << someVariable;
}

参考:abs在cmath标题中声明。因此,如果您想使用abs,您需要在代码中包含cmath,如下所示:

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
    float someVariable = abs(-4.22);
    cout << someVariable;
}

参考资料:

啊,好吧,我必须把它包括进去,这样它才能工作。谢谢你的帮助。但我几乎可以肯定ABS可以用于实数,不,我在C中读到,但是C++是的!是的,正确@aName,看看我的更新,顺便说一句,你问了一个很好的问题,+1!我不认为你需要晶圆厂,如果你包括数学.h,根据,都应该声明相同的名称,只是在不同的名称。数学中的abs.h似乎对实数很好。这也是我在HolyBlackCat上的想法,但请看我的第一个现场演示。我包括在内。将晶圆厂更改为abs会导致错误!奇怪的是,在我的工作环境中,仅仅包括math.h和abs-4.22就可以了!!啊,好吧,我必须把它包括进去才能起作用。谢谢你的帮助。但我几乎可以肯定ABS可以用于实数,不,我在C中读到,但是C++是的!是的,正确@aName,看看我的更新,顺便说一句,你问了一个很好的问题,+1!我不认为你需要晶圆厂,如果你包括数学.h,根据,都应该声明相同的名称,只是在不同的名称。数学中的abs.h似乎对实数很好。这也是我在HolyBlackCat上的想法,但请看我的第一个现场演示。我包括在内。将晶圆厂更改为abs会导致错误!奇怪的是,在我的工作环境中,仅仅包括math.h和abs-4.22就可以了!!