我正在编写一个用于类的 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/