c++ - 即使参数顺序不同,“重载函数的调用也不明确”
问题描述
我有一个fun()
希望在同一范围内重载的函数。根据重载规则,不同的参数顺序应该允许函数的重载,如此处所述。
编码:
#include "iostream"
using namespace std;
void fun(int i, float j)
{
cout << "int,float";
}
void fun(float i, int j)
{
cout << "float,int";
}
int main()
{
fun(20,20);
}
错误:
error: call of overloaded ‘fun(int, int)’ is ambiguous
15 | fun(20,20);
问题:
如果只有一个带有参数fun(int, float)的函数,那将被称为最佳匹配,那么为什么在这种情况下会抛出错误。
解决方案
你给了两个整数,所以编译器必须将一个转换为浮点数,但是应该采用哪个函数呢?
int main()
{
fun(20.0,20);
fun( 20, 20.0);
}
这些调用使编译器高兴,因为您告诉了应该采用哪个函数。
推荐阅读
- docker - 如何将 NGINX 正确配置为 tine20 docker 容器(与 Apache2 一起运行)的反向代理?
- vue.js - 类之间的区别(vuejs)
- r - 如果具有名称的列包含部分值,则保留行
- android - 真彩色图标显示黑色背景
- python-3.x - 如何将整个 tkinter 画布截图为 png 或 pdf
- cassandra - 当 cassandra 似乎正在运行和收听但 cqlsh 无法连接时,我应该尝试什么?
- swift - 没有在我的 iPhone 上收到推送通知,但 Firebase Functions 说它已成功发送?
- angular - 如何从可观察对象动态创建 FromGroup?
- gwt - DataGrid 什么都不显示
- python - 当我将文件名存储在列表中时,在 python 中打开多个文件的最佳方法是什么?