mian.cpp:56: error: call of overloaded ‘abs(int&)’ is ambiguous
/usr/include/c++/4.4/cmath:94: note: candidates are: double std::abs(double)
/usr/include/c++/4.4/cmath:98: note: float std::abs(float)
/usr/include/c++/4.4/cmath:102: note: long double std::abs(long double)
上面的意思是我的abs()有歧义,abs()的候选函数有上面列出的三个。但是我的代码里明明用的是int型的,编译器应该可以重载的阿。
代码太长了,这里我把示意性代码列出如下:
#include
#include
int a;
cin >> a;
a = abs(a);
如果把 a = abs(a) 改为 a = fabs(a) 时就可以了。不明白为什么
yur 于 2010-12-19 01:00:52发表:
good
dhwoecv 于 2010-11-28 08:41:43发表:
向楼主学习下
chengshiding 于 2010-11-28 01:24:21发表:
[i=s] 本帖最后由 chengshiding 于 2010-11-28 01:25 编辑 [/i]
,其余的函数都在头文件 math.h 中定义,包括对浮点数求绝对值的函数fabs()。
对应 #include
对应 #include
问题已解决:如下
最佳解决方案:
c语言书本上说,数学函数除了求整数的绝对值函数abs()之外
c++中,包含的相应的头文件为,原则是前面加c,同时去掉.h 。
例如:
#include
#include
于是,在c++里
使用abs()就用 #include
使用fabs()就用 #include