错误:对重载函数的调用不明确
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)
我怀疑问题是第一个和第三个都采用浮点参数并返回浮点值。但是谁能给我一个提示,告诉我如何确定(我正在使用Visual Studio)这四个功能的来源,以便我可以消除重复,例如?或者也许只是给我一个关于如何解决这个问题的提示。
您可以在该函数上按 F12。
更新
根据OP的评论,问题是由于从G3D::
引入的acos
的定义。使用 std::acos 而不是 acos
将消除歧义。
您可以在 VS studio 中启用文件列表编译器选项,以便了解编译过程中包含哪些文件,请参阅此 msdn 文章。
相关文章:
- C++ 编译器错误:P1LinkedList.cpp:145:错误:重载的"to_string(int&)"调用不明确
- 为什么调用不明确的 ctor 时没有编译时错误?
- G++ 错误:重载的"abs(无符号 int)"的调用不明确
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- 错误:重载'stoi(nlohmann::basic_json<>::value_type&)'的调用不明确
- 构建 castalia 时出错:重载函数的调用不明确
- 错误:重载的"abs(double)"调用不明确
- 结构构造函数调用不明确
- 错误:对重载函数的调用不明确
- 对重载'swap(char&, char&)'的调用不明确
- 对可变模板函数的调用不明确
- C++ 编译错误:重载的"<function_name>(char*&)"调用不明确
- VS2010中具有list_of的调用不明确
- 为什么这个运算符=调用不明确
- 为什么对重载函数的调用不明确
- C++中重载运算符函数对构造函数的调用不明确
- 为什么这些重载函数调用不明确
- 重载write(int)的调用不明确
- 带有重载r值引用函数的调用不明确
- 传递0而不是1时,sfinae调用不明确