首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

模板类与实例类无法识别,提示 对模板函数重载函数的调用不明确,该怎么解决

2012-03-17 
模板类与实例类无法识别,提示 对模板函数重载函数的调用不明确代码如下[codeC/C++][/code]#includeiostr

模板类与实例类无法识别,提示 对模板函数重载函数的调用不明确
代码如下
[code=C/C++][/code]
#include<iostream>
#include<string>
using namespace std;
template<class T>
T max(T a,T b)
{
return (a>b)?(a):(b);
}
char*max(char*a,char*b)
{
int flag=strcmp(a,b);
if(flag>=0)
return a;
return b;
}
int main()
{
int a=2,b=4;
cout<<max(a,b);
char*c="adfae";
char*d="aefwef";
cout<<max(c,d);

}

错误是:e:\程序员\commanagement\commanagement\comoditymanagement.cpp(136) : error C2668: “max”: 对重载函数的调用不明确
1> e:\程序员\commanagement\commanagement\comoditymanagement.cpp(122): 可能是“T max<int>(T,T)”
1> with
1> [
1> T=int
1> ]
1> d:\program files\microsoft visual studio 9.0\vc\include\xutility(3356): 或 “const _Ty &std::max<int>(const _Ty &,const _Ty &)”
1> with
1> [
1> _Ty=int
1> ]
1> 试图匹配参数列表“(int, int)”时
但是将第一个模板传递的参数改为按引用传递就没问题。这是怎么回事?

[解决办法]
因为和原有的库函数冲突了~

热点排行