Funkcja specjalizowana to taka funkcja, której nagłówek mógłby zostać wygenerowany przez szablon. U Ciebie nagłówek szablonu wygląda tak:
template<typename T>
T maxn(T tab[], int n)
Więc dla T równego const char* otrzymalibyśmy funkcję o takim oto nagłówku:
const char* maxn(const char* tab[], int n)
Chcąc napisać funkcję specjalizowaną piszesz po prostu funkcję o takim nagłówku (bez żadnych "template").
Przykładowe rozwiązanie Twojego problemu:
const char* maxn(const char* napisy[], int iloscStringow)
{
if (iloscStringow > 0)
{
string najdluzszy = napisy[0];
int indeksNajdluzszego = 0;
for (int i = 1; i < iloscStringow; i++)
{
string obecnieTestowany = napisy[i];
if (najdluzszy.length() < obecnieTestowany.length())
{
najdluzszy = obecnieTestowany;
indeksNajdluzszego = i;
}
}
return napisy[indeksNajdluzszego];
}
else
{
return 0;
}
}
Podmień jeszcze char* na const char* w linijce:
char *tc[6] = {"Ala ma kota","Ala ma psa","ala ma kotela","Srijayawardanapurakotte", "NIc","Krotkie"}, k;
Te C-Stringi którymi sobie inicjalizujesz tablicę są stałymi dosłownymi. Dodatkowo w tej samej linijce zdefiniowałeś sobie k jako znak, a nie wskaźnik na znaki. Powinno być oczywiście *k.
Pozdrawiam i powodzenia! :)