繁体   English   中英

错误:对重载函数的模棱两可的调用

[英]Error: ambiguous call to overloaded function

float App::fresnelReflectTerm(float etaPos, float etaNeg, float cos_theta_i)
{
float theta_i;
theta_i = acos(cos_theta_i);
    ...

这将生成“对重载函数错误的歧义调用”,并说有四个选项:

float acos(float fValue)
double acos(double _X)
float acos(float _X)
long double acos(long double _X)    

我怀疑问题是第一个和第三个都使用浮点arg并返回浮点值。 但是,谁能给我一个提示,说明如何确定这四个函数的来源(我使用的是Visual Studio),以便例如消除重复项? 或只是给我一个有关如何解决此问题的提示。

您可以在该功能上按F12。

更新

根据OP的评论,该问题是由于从G3D::中引入了acos的定义G3D:: 使用std :: acos而不是acos可以消除歧义。

您可以在VS Studio中启用“文件列表编译器”选项,因此您将知道在编译过程中包括哪些文件,请参阅此msdn 文章

暂无
暂无

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

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