源码如下:
#include "iostream"
int MyFunc(int a)
{
return a;
}
float MyFunc(float a)
{
return a;
}
int main()
{
MyFunc(1.2);
return 0;
}
编译错误提示:error C2668: 'MyFunc' : ambiguous call to overloaded function
原因:
为1.2默认存储为double型,而所有MyFunc的重载中均没有以double为参数的,所以在将double转换为合适的参数时,int和float均是符合要求的,编译器会不清楚具体调用那个MyFunc
修改:
MyFunc(static_cast<int>(1.2));