我在努力
void function(int y,int w)
{
printf("int function");
}
void function(float y,float w)
{
printf("float function");
}
int main()
{
function(1.2,2.2);
return 0;
}
我收到一个错误错误,例如..
error C2668: 'function' : ambiguous call to overloaded function
当我尝试调用 function(1.2,2)
或 function(1,2.2)
时,它打印为“int function "
请说明function(float y,float w)
何时会被调用?
最佳答案
查看来自gcc的错误信息:
a.cpp:16: error: call of overloaded ‘function(double, double)’ is ambiguous
a.cpp:3: note: candidates are: void function(int, int)
a.cpp:9: note: void function(float, float)
对任一函数的调用都需要截断,这就是为什么两者都不是首选的原因。我怀疑你真的想要 void function(double y,double w)
。请记住,在 C/C++ 中,文本和参数传递的默认浮点类型是 double,而不是 float.
更新
如果您真的不想将 函数签名 从 float 更改为 double,您可以随时使用 literals 类型为 float。如果您将后缀 f 添加到 float ,它们将被键入 float。
您的示例将是 function(1.2f, 2f)
和 function(1, 2.2f)
。
关于c++ - 对重载函数错误的奇怪模棱两可的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16602175/