读书人

关于vc 2008模板的有关问题

发布时间: 2012-09-23 10:28:11 作者: rapoo

关于vc 2008模板的问题
#include<iostream>
using namespace std;
template<typename T>
T max(T a, T b )
{return a>b?a:b;}
int main()
{
//cout<<max(1,3)<<endl;
cout<<max('a','b')<<endl;
return 0;
}
用08运行报错 “max”: 对重载函数的调用不明确
但是复制到6.0中就可以正常运行,为什么

[解决办法]
听说6.0对C++标准的实现并不到位。

max(1,3)既可以解释为max<int>(1, 3),也可以解释为max<char>(1, 3),也可以解释为max<double>(1, 3)。编译器不知道楼主想要的是哪个。
[解决办法]
using namespace std;

去掉这行
[解决办法]
由于库里面本省有个max函数,你这样改一下

C/C++ code
cout<<::max('a','b')<<endl;
[解决办法]
先把自己写的max改名,和库里的东西重名了。

读书人网 >C++

热点推荐