gpt4 book ai didi

c++ - 这个函数调用在 C++ 中是如何模糊的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:53 25 4
gpt4 key购买 nike

考虑以下程序:(请在此处查看现场演示 http://ideone.com/7VHdoU)

#include <iostream>
void fun(int*)=delete;
void fun(double)=delete;
void fun(char)=delete;
void fun(unsigned)=delete;
void fun(float)=delete;
void fun(long int);
int main()
{
fun(3);
}
void fun(long int a)
{
std::cout<<a<<'\n';
}

编译器给出以下错误:

error: call of overloaded 'fun(int)' is ambiguous
fun(3);
^

但我不明白为什么以及它是如何模棱两可的?这里是否涉及任何类型的自动促销?我知道用 (3L) 调用 fun 可以使编译成功。

最佳答案

可能 3 可以解释为其他类型(如 charunsigned...),因此编译器可能不清楚您想要什么函数称呼。您需要指示值 3 是一个 long int

#include <iostream>
void fun(int*)=delete;
void fun(double)=delete;
void fun(char)=delete;
void fun(unsigned)=delete;
void fun(float)=delete;
void fun(long int);
int main()
{
fun((long int)3);
}
void fun(long int a)
{
std::cout<<a<<'\n';
}

关于c++ - 这个函数调用在 C++ 中是如何模糊的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33250954/

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