#include<iostream.h>
#include<conio.h>
void check(int);
void check(float b);
void main()
{
clrscr();
check(10);
check(2.5);
getch();
}
void check(int c)
{
cout<<c;
}
void check(float b)
{
cout<<b;
}
我定义了两个名为check的函数,一个以整数作为参数,另一个以浮点数作为参数。当我编译程序编译器时,发现两个函数之间存在歧义。我无法想象此案。谁能帮我吗?
最佳答案
2.5
的类型为double
,并且C++并未说一个缩小的转换(到int
或float
)比另一个更优选。因此,通话是不明确的。
您可以通过调用check(2.5f)
或(可能更有用)通过实现void check(double);
而不是float
重载或来修复它。
关于c++ - 我在程序中找不到歧义,但是编译器说在check(int)和check(float)之间存在歧义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20888528/