首页 > 解决方案 > 即使参数顺序不同,“重载函数的调用也不明确”

问题描述

我有一个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)的函数,那将被称为最佳匹配,那么为什么在这种情况下会抛出错误。

标签: c++

解决方案


你给了两个整数,所以编译器必须将一个转换为浮点数,但是应该采用哪个函数呢?

int main()
{
  fun(20.0,20);
  fun( 20, 20.0);
}

这些调用使编译器高兴,因为您告诉了应该采用哪个函数。


推荐阅读