Теперь я изучаю шаблон функции.отличия шаблонов функций
Я пробовал следующий код.
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 года?
Сначала вырезаем и вставляем сообщение об ошибке, чтобы мы могли видеть, что он на самом деле сказал (прямо сейчас это явно неправильно, например, вызов одной из двух «Ма» вместо «Макс»). –
Благодарим вас за рекомендацию. Я вставил сообщение об ошибке через свой текстовый редактор, в котором я могу удалить часть текста. – sevenOfNine