【发布时间】:2011-04-25 11:56:06
【问题描述】:
我已经编写了一个函数模板和一个明确专门化的模板化函数,它们只接受 3 个参数并计算其中最大的一个并打印出来。
专用函数导致错误,而模板工作正常。 但我想使用 char* 类型。
这是我得到的错误=>
error: template-id ‘Max<>’ for ‘void Max(char, char, char)’ does not match any template declaration
以下是我的代码:
template <typename T>
void Max(T& a,T& b,T& c)
{
if(a > b && a >> c)
{
cout << "Max: " << a << endl;
}
else if(b > c && b > a)
{
cout << "Max: " << b << endl;
}
else
{
cout << "Max: " << c << endl;
}
}
template <>
void Max(char* a,char* b,char* c)
{
if(strcmp(a,b) > 0 )
{
cout << "Max: " << a << endl;
}
else if(strcmp(b,c) > 0)
{
cout << "Max: " << b << endl;
}
else
{
cout << "Max: " << b << endl;
}
}
【问题讨论】:
-
先把原签名做好。模板
void Max(T&a,T&b,T&c) -
在我的情况下,这是由于将 const 添加到返回类型规范,从而导致与主模板函数不匹配。
标签: c++ generics strcmp function-templates