c++ - 错误: ambiguous call to overloaded function

标签 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)    

我怀疑问题在于第一个和第三个都采用浮点参数并返回浮点值。但是,有人可以给我一个提示,告诉我如何确定(我正在使用 Visual Studio)这四个函数的来源,以便我可以消除重复吗?或者也许只是给我一个关于如何解决这个问题的提示。

最佳答案

您可以在该功能上按 F12。

更新

根据 OP 的评论,问题是由于从 G3D:: 引入 acos 的定义造成的。使用std::acosacos 相反,将消除歧义。

关于c++ - 错误: ambiguous call to overloaded function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21894274/

相关文章:

c++ - 使用 CString 参数调用 UpdateAllViews

c++ - 指向可能不存在的对象的指针 vector

visual-studio - 如何在 VS2010 中创建新的项目类型?

c# - 是否可以为 Visual Studio 2010 编写 Debugger Visualizer 来显示 64 位 .NET 程序?

.net - 在 Visual Studio 2010 中,为什么要创建 .NETFramework,Version=v4.0.AssemblyAttributes.cpp 文件,我可以禁用它吗?

C++:类功能子集的推荐设计模式?

.net - 在混合模式 C++ 项目中从 CLR 到 SEH 异常获取敏感信息

c++ - 开始使用 Crypto++

c++ - 字符串与结构元素比较

c++ - GetWindowText 与 char[]