error C2668: 'sqrt' : ambiguous call to overloaded
2013-11-09 11:01
696 查看
报错信息:
error C2668: 'sqrt' : ambiguous call to overloaded function
1> f:\program files\microsoft visual studio 9.0\vc\include\math.h(581): could be 'long double sqrt(long double)'
1> f:\program files\microsoft visual studio 9.0\vc\include\math.h(533): or 'float sqrt(float)'
1> f:\program files\microsoft visual studio 9.0\vc\include\math.h(128): or 'double sqrt(double)'
1> while trying to match the argument list '(int)'
当编译器看到sqrt(4)的时候,它会试图去找一个sqrt(int)的函数,但是找不到。
于是退而求其次,找一个可以从int转换过去的sqrt,结果一下找到了两个,一个是sqrt(long double),另一个是sqrt(float)。编译器认为把int转换成long double或者float都很合理,于是编译器就晕菜了,不知道程序员的真正意图到底是要用哪一个,只好停下来请示,要求程序员明确指定其中一个。
sqrt(4.0)就不存在这个问题,因为4.0不是int,编译器不需要做转换,直接用对应的就行了。
sqrtf(4)没问题,是因为sqrtf只有一个函数原型sqrtf(float),编译器没有任何其它选择,就很高兴的直接把int转换成float了。
error C2668: 'sqrt' : ambiguous call to overloaded function
1> f:\program files\microsoft visual studio 9.0\vc\include\math.h(581): could be 'long double sqrt(long double)'
1> f:\program files\microsoft visual studio 9.0\vc\include\math.h(533): or 'float sqrt(float)'
1> f:\program files\microsoft visual studio 9.0\vc\include\math.h(128): or 'double sqrt(double)'
1> while trying to match the argument list '(int)'
当编译器看到sqrt(4)的时候,它会试图去找一个sqrt(int)的函数,但是找不到。
于是退而求其次,找一个可以从int转换过去的sqrt,结果一下找到了两个,一个是sqrt(long double),另一个是sqrt(float)。编译器认为把int转换成long double或者float都很合理,于是编译器就晕菜了,不知道程序员的真正意图到底是要用哪一个,只好停下来请示,要求程序员明确指定其中一个。
sqrt(4.0)就不存在这个问题,因为4.0不是int,编译器不需要做转换,直接用对应的就行了。
sqrtf(4)没问题,是因为sqrtf只有一个函数原型sqrtf(float),编译器没有任何其它选择,就很高兴的直接把int转换成float了。
相关文章推荐
- 关于sqrt函数 error C2668: 'sqrt' : ambiguous call to overloaded function
- error C2668: ‘sqrt’ : ambiguous call to overloaded function
- error C2668: 'abs' : ambiguous call to overloaded function
- 函数重载二义性:error C2668: 'pow' : ambiguous call to overloaded function
- error C2668: ‘pow’ : ambiguous call to overloaded function
- C2668: 'sqrt' : ambiguous call to overloaded function(sqrt问题)
- ambiguous call to overloaded function 两种情况的错误分析及解决方法
- ambiguous call to overloaded function
- ambiguous call to overloaded function解决的办法
- ambiguous call to overloaded function错误分析及解决方法
- 'sqtr'ambiguous call to overloaded function
- 【关于DrawLine' : ambiguous call to overloaded function解决办法】
- error: no matching function for call to ‘boost::thread::thread(<unresolved overloaded function type>
- error: no matching function for call to ‘ptr_fun(<unresolved overloaded function type>)’
- Qt error ------ no matching function for call to QObject::connect(QSpinBox*&, <unresolved overloaded function type>, QSlider*&, void (QAbstractSlider::*)(int))
- Scala中使用JSON.toJSONString报错:ambiguous reference to overloaded definition
- 13.10 Scala中使用JSON.toJSONString报错:ambiguous reference to overloaded definition
- Error armlink L6238 Startup.o(Start) contains invalid call from '~PRES8' function to 'REQ8' functio
- use __call() to create a delegation model
- Fatal error: Call to a member function getSource() on a non-object in G:\wamp\www\ChinaMagicCube\ap