为了账号安全,请及时绑定邮箱和手机立即绑定

我这样fun重载竟然报错了。。改成double就行,但是float就不行!什么鬼??

#include"iostream"
using namespace std;
void fun(int x = 1,int y = 2,int z = 3);
void fun(float x,float y);
int main()
{
	fun(0.9,0.1);
	system("pause");
	return 0;
}

void fun(int x,int y,int z)
{
	cout <<x<<','<<y<<','<<z<<endl;
}
void fun(float x,float y)
{
	cout<<x<<','<<y<<endl;
}

error C2668: 'fun' : ambiguous call to overloaded function

could be 'void fun(float,float)'

or       'void fun(int,int,int)'


正在回答

2 回答

虽然0.9既能算是double又能算是float但是系统默认0.9这类的数为double型的,所以你要用float需要在数前指明。你的fun(0.9,0.1);函数里的0.9和0.1数被系统默认为double型的,所以在寻找double型重载时不匹配故报错,你要这样就可以:fun((float)0.9,(float)0.1);

0 回复 有任何疑惑可以回复我~

其实好多  float型  都能用 double型表示   或许这和 编译器有关

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之离港篇
  • 参与学习       122700    人
  • 解答问题       474    个

C++扫清通往面向对象的最后一道障碍,将所有知识点融会贯通

进入课程

我这样fun重载竟然报错了。。改成double就行,但是float就不行!什么鬼??

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信