#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++并未说一个缩小的转换(到intfloat)比另一个更优选。因此,通话是不明确的。

您可以通过调用check(2.5f)或(可能更有用)通过实现void check(double);而不是float重载或来修复它。

关于c++ - 我在程序中找不到歧义,但是编译器说在check(int)和check(float)之间存在歧义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20888528/

10-14 07:13