函数重载二义性:error C2668: 'pow' : ambiguous call to overloaded function

本文讨论了在C++编程中遇到的pow函数二义性问题,通过指定参数类型解决此问题,确保代码正确编译并运行。

2013-07-08 14:42:45

当使用的函数时重载函数时,若编译器不能判断出是哪个函数,就会出现二义性,并给出报错信息。

问题描述:

在.cpp代码中用到pow函数,如下:

long int MaxInteger = pow( 2,8*sizeof(long int) -1 );

编译,报错为:

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

error C2668: 'pow' : ambiguous call to overloaded function
1>          d:\program files\microsoft visual studio 10.0\vc\include\math.h(583): could be 'long double pow(long double,int)'
1>          d:\program files\microsoft visual studio 10.0\vc\include\math.h(581): or       'long double pow(long double,long double)'
1>          d:\program files\microsoft visual studio 10.0\vc\include\math.h(535): or       'float pow(float,int)'
1>          d:\program files\microsoft visual studio 10.0\vc\include\math.h(533): or       'float pow(float,float)'
1>          d:\program files\microsoft visual studio 10.0\vc\include\math.h(497): or       'double pow(double,int)'
1>          d:\program files\microsoft visual studio 10.0\vc\include\math.h(122): or       'double pow(double,double)'

根据给出的信息,可知pow函数有6种重载函数,编译器根据给定的参数不能判断代码中使用的是哪个函数,因此报错。

解决办法:

可通过指定参数的类型解决,如下:

MaxInteger = (long int) pow( (float)2,(int)( 8*sizeof(long int) - 1 ) )

这样,编译器就直达是要用'long double pow(long double,int)'这个函数了。

转载于:https://www.cnblogs.com/youngforever/p/3177921.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值