使用Kinect,错误C2668:对重载函数的模糊调用

时间:2017-12-22 15:08:51

标签: c++ visual-studio sdk kinect

我刚开始使用visual studio,我试图通过视觉工作室运行kinect样本。到目前为止,像ColorBasic,DepthBasic-D2D,Depth-D3D这样的所有样本都运行良好,但是当我尝试运行FaceTrackingVisualization时出现错误:

1>d:\programme\dropbox\dropbox\uni\uni\pa_eyetracking\visualstudio\programms\samples\facetrackingvisualization\singleface\kinectsensor.cpp(435): **Error C2668: "abs": ambiguous call to overloaded function**

1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\ucrt\stdlib.h(363): note: kann "__int64 abs(const __int64) throw()" sein

1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\ucrt\stdlib.h(358): note: oder "long abs(const long) throw()"

1>c:\program files (x86)\windows kits\10\include\10.0.16299.0\ucrt\stdlib.h(288): note: oder "int abs(int)"

有人知道如何解决这个错误吗?我只是使用了示例代码,我不明白为什么会出现问题。 我使用的是Visual Studio 2017和SDK v1.8.0。

谢谢。

1 个答案:

答案 0 :(得分:0)

当编译器必须从没有显式参数匹配的类型进行类型转换,并且有多个函数具有隐式类型强制转换时,会发生这种情况。在这种情况下,有一些用于int和long和long long的函数,但是传入的类型可能是无符号的或浮点型或双精度型。

您可以根据输入类型将行从std :: abs(myValue)更改为std :: abs(static_cast(myValue)),或强制转换为int或long。