注册 登录
编程论坛 C++教室

[求助]关于函数的调用问题

ml232528 发布于 2007-08-05 14:49, 440 次点击
下面的程序函数调用那错了



#include<iostream>
using namespace std;

template<typename t>
t max(int &a,char& b)
{
return(a>b?a:b);
}

int main()
{

int a1,a2;
char c1,c2;

a1=10;a2=50;
c1='a';c2=65;

cout<<"max="<<max(a1,c2)<<'\n'; //
getchar();
}
3 回复
#2
aipb20072007-08-05 15:00
当然要错了,你这样定义模版函数,编译器不能做实参推断。
也就是t是什么类型不可知。
#3
ml2325282007-08-05 18:48
那为什么这又是对的

#include<iostream>
using namespace std;
template<typename t>
t max(int &a,int& b)
{
return(a>b?a:b);
}
int main()
{

int a1,a2;
char c1,c2;
a1=10;a2=50;
c1='a';c2=65;
cout<<"max="<<max(a1,a2)<<'\n';
getchar();
}
#4
aipb20072007-08-05 18:57
可以推断了啊,int型。
你这样弄个模版函数,不是多余了吗?
你想比较int和char,直接不用模版就行,你想在模版函数里用内置类型的隐式转换不可行。
最好去看看,关于模板的实参推断机制,你就清楚了!
1