我现在正在研究函数模板。
我尝试了以下代码。
template <typename TYPE>
TYPE& Max(TYPE& a, TYPE& b)
{
return (a > b ? a : b);
}
template < >
char* Max<char*>(char* a, char* b)
{
return (strcmp(a, b) > 0) ? a : b;
}
template < >
const char* Max<const char*>(const char* a, const char* b)
{
return (strcmp(a, b) > 0) ? a : b;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a = 3.14;
float b = 2.718;
float c = Max(a, b);
char *ca = "abc";
char *cb = "def";
char *cmp = Max(ca, cb); // error (E2015)
}
在 C++ Builder XE4 上,我收到以下错误。
E2015 Ambiguity between 'char *Ma<>(char *, char *) at Unit1.cpp:43'
and 'Max<>(char *,char *)at Unit1.cpp:43'
在这种情况下,我应该怎么做才能避免错误 2015?