c++ - 如何修复 "ambiguous"函数调用?

标签 c++ ambiguous-call

我正在编写一个用于类的 C++ 程序,而我的编译器正在提示一个“模棱两可”的函数调用。我怀疑这是因为有几个函数定义了不同的参数。

如何告诉编译器我想要哪一个?除了针对特定情况的修复之外,是否有一般规则(例如类型转换)可以解决这类问题?

编辑:

就我而言,我尝试调用 abs()内部 cout声明,传入两个 double秒。

cout << "Amount is:" << abs(amountOrdered-amountPaid);

编辑2:

我包括这三个标题:

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

编辑3:

我已经完成了没有这段代码的程序,但是为了解决这个问题,我已经重现了这个问题。逐字错误是:

Call to 'abs' is ambiguous.

编译器提供了三个版本的 abs ,每个都采用不同的数据类型作为参数。

最佳答案

发生的事情是您已包含 <cstdlib> (间接地,因为它包含在 iostream 中)以及 using namespace std; .这个头文件在 std 中声明了两个函数名称为 abs() .取回long long ,其他返回 long .另外,全局命名空间中的一个(返回 int )来自 <stdlib.h> .

修复:好吧,abs()需要双倍的在 <cmath> ,这实际上会给你想要的答案!

关于c++ - 如何修复 "ambiguous"函数调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549874/

相关文章:

c++ - 重载运算符>>,将一个参数传递给对象而不是三个

c++ - 如何将 Qt 运行时 DLL 复制到项目输出

c++ - 如何为单个函数设置 ICC 属性 "fp-model precise",以防止关联优化?

java - 为什么这不会产生歧义?

c++ - 解决参数依赖查找歧义的非侵入性方法

c++ - 在 Win32 应用程序中捕获 DLL 依赖项

c++ - 为字符串类创建复制构造函数

c++ - 推导函数调用时的歧义问题

haskell - 使用 DuplicateRecordFields 消除记录更新的歧义

c++ - 当一个类和一个函数同名时会发生什么?