Witam!!
Mam takie zadanie, mam napisać program który wykorzystuje szablon to zwrócenia największej wartości w tablicy, funkcja przyjmuje tablice(adres) oraz jej rozmiar, program ma tez korzystać ze specjalizacji w której przyjmuje tablice typu char i zwraca adres najdłuższego wyrazu.
Problem mam taki że nie bardzo rozumiem te specjalizacje, mógłby mi to ktoś jakoś przybliżyć.
ciągle mam taki błąd [Error] template-id 'maxn<char*>' for 'char* maxn(char*, int)' does not match any template declaration
oto co napisałem
#include <iostream>
const int SIZE = 5;
template <typename T>
T maxn(T tab[], int rozmiar);
template<> char* maxn<char*>(char* tab[], int rozmiar);
int main(void)
{
int tab1[10] = {1, 5, 2, 7, 0, 5, 8 ,94, 158, 147};
double tab2[6] = {100, 98.5, 14.5, 4, 9, 454.987};
const char* tab3[7] = {"ala", "ma", "kota", "oraz", "dwie", "dzikie", "dwujednorożce"};
int a;
double b;
char * ch, * wsk;
a = maxn(tab1, 10);
b = maxn(tab2, 6);
ch = maxn(tab3, 7);
std::cout << a << " " << b << std::endl;
std::cout << ch << std::endl;
return 0;
}
template <typename T>
T max5(T tab[], rozmiar )
{
T x = tab[0];
for(int i = 1; i < rozmiar ; i++)
if(tab[i] > x)
x = tab[i];
return x;
}
template <> const char* maxn(const char* tab[], int rozmiar)
{
unsigned len = 0;
int j = 0;
for(int i = 0; i < rozmiar; i++)
if(len < strlen(tab[i])) {
len = strlen(tab[i]);
j = i;
}
return tab[j];
}