错误:对重载函数的模糊调用

时间:2014-02-19 22:46:15

标签: c++ visual-studio-2010

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)这四个函数来自哪里的提示,以便我可以消除重复,例如?或者也许只是给我一个如何解决这个问题的提示。

2 个答案:

答案 0 :(得分:2)

您可以在该功能上按F12。

更新

根据OP的评论,问题是由acos引入G3D::的定义。使用std::acos而非acos将消除歧义。

答案 1 :(得分:1)

您可以在VS studio中启用文件列表编译器选项,这样您就可以知道在编译期间包含哪些文件,请参阅此msdn article