编译时说sqrt对重载函数调用不明确,为什么?
假如原先是这样的:if (sqrt((x0-tx)*(x0-tx)+(y0-ty)*(y0-ty))<r0) \/\/其中参数都是int。运行程序时出现下述错误:error C2668: “sqrt”: 对重载函数的调用不明确。1> d:\\vs2010\\vc\\include\\math.h(581): 可能是“long double sqrt(long double)”1> d:\\vs2010\\vc\\inclu...
...却不能用sqrt函数,提示:对重载函数的调用不明确??
C语言是没有重载的,C++才有,你应该是用C++的编译器来写C语言吧 在C++中sqrt有两个重载函数,一个参数是double,另一个是float 由于你传的参数是int在默认的隐式类型转换中int可以转换成float也可以转换为double,编译器就不知道你想调用哪一个。用强制的类型转换可以解决这个问题。
error C2668: "sqrt": 对重载函数的调用不明确 2 IntelliSense: 有多...
将sqrt调用改为:b = int(sqrt(float(i)));或者 b = int(sqrt(double(i)));
error C2668: “sqrt”: 对重载函数的调用不明确
这是因为pixel是整型吧,需要将参数强制装换成(double),结果自然是double了。result = sqrt((double)( pixel[0] - pixel[3] )*( pixel[0] - pixel[3] ) + ( pixel[1] - pixel[2] )*( pixel[1] - pixel[2] ));
求大神解答为什么老说我的“sqrt”: 对重载函数的调用不明确
_Check_return_ _CRT_JIT_INTRINSIC double __cdecl sqrt(_In_ double _X);首先重载:一个是函数个数不一致,一个是函数类型不一致;你上面的传入的是一个int 类型,原本内部的是一个double类型。
sqrt对重载函数的调用不明确
这个你需要强制类型转化,因为sqrt只支持double和float类型,你可以这样 c=(int) sqrt((double)a*a+b*b);或者c=(int) sqrt((float)a*a+b*b);
...显示sqrt:对重载函数的调用不明确。 compilation error。
看了楼上的回答,对ACM的厌恶又增加了一分,感觉跟实际编程脱节太多了。其实楼主用不着用sqrt函数,直接for (i=2; i<=m\/2;i++) 也行。
提示sqrt对重载函数调用不明确
这说明存在其他同名函数啊,你检查下有没有同名,系统产生歧义的时候才会出现这条提示的
为什么会出现这个问题:sqrt”: 对重载函数的调用不明确
改成int后把小数部分丢失了,其一。如果你对丢失小数部分无所谓的话,可以根据错误提示,把SQRT中的参数加上强制类型转换(long double或double或float)
对重载函数的调用不明确..急!!!
这是因为参数类型不对 改成 cout <<sqrt (25.0)<< endl;或cout <<sqrt ((float)25)<< endl;就没问题了 希望我的回答对你有所帮助