gpt4 book ai didi

c++ - 对重载函数错误的奇怪模棱两可的调用

转载 作者:IT老高 更新时间:2023-10-28 12:35:01 26 4
gpt4 key购买 nike

我在努力

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com