问题描述
- C++中对调用重载函明确
-
#include
using namespace std;
#include"math.h"
void main()
{
long int i,x,y;
for(i=1;i
{x=sqrt(i+100);
y=sqrt(i+268);
if(x*x==i+100&&y*y==i+268)
cout
}
}
错误提示:件vs2010visual studio 2010projectsvsmacros80samples平方数平方数main.cpp(8): error C2668: “sqrt”: 对重载函数的调用不明确
1> e:常用软件vs2010vcincludemath.h(589): 可能是“long double sqrt(long double)”
1> e:常用软件vs2010vcincludemath.h(541): 或 “float sqrt(float)”
1> e:常用软件vs2010vcincludemath.h(127): 或 “double sqrt(double)”
1> 尝试匹配参数列表“(long)”时
1>e:常用软件vs2010visual studio 2010projectsvsmacros80samples平方数平方数main.cpp(9): error C2668: “sqrt”: 对重载函数的调用不明确
1> e:常用软件vs2010vcincludemath.h(589): 可能是“long double sqrt(long double)”
1> e:常用软件vs2010vcincludemath.h(541): 或 “float sqrt(float)”
1> e:常用软件vs2010vcincludemath.h(127): 或 “double sqrt(double)”
1> 尝试匹配参数列表“(long)”时
解决方案
用long float或者double,如果是别的类型,先强制类型转换到这三种类型之一。long int不支持。
解决方案二:
试着写成:
x=sqrt(i+100.0);
y=sqrt(i+268.0);
是不是参数本来要 float 或 double,而你给的却是 int 型。
解决方案三:
long int i,x,y;这里不要这么使用吧。
就使用long i,x,y;
解决方案四:
long int i,x,y;这里不要这么使用吧。
就使用long i,x,y;
解决方案五:
有类型不匹配。sqrt原型是:
double sqrt(double);
而你传入了long,显然不匹配,因此报错。
时间: 2024-10-25 05:47:18