napisałem program wykorzystujący szablony i jedną specjalizacje, ale się nie kompiluje, staje na wywołaniu funkcji wyspecjalizowanej wiersz 41 i pisze, że nie ma pasujących funkcji, a przeciez pierwszy parametr jest string a drugi int i wartosc zwracana string
#include <iostream>
#include <string>
using namespace std;
template <typename T>
T biggest(T tab[],int n);
template <> string biggest<string>(string wyraz[],int dlug);
int main()
{
int dlugoscInt, dlugoscDouble;
cout << "podaj dlugosc tablicy int" << endl;
cin>>dlugoscInt;
int tablicaInt[dlugoscInt];
for(int i=0;i<dlugoscInt;i++)
{
cout<<"podaj inta"<<endl;
cin>>tablicaInt[i];
}
cout << "podaj dlugosc tablicy double" << endl;
cin>>dlugoscDouble;
double tablicaDouble[dlugoscDouble];
for(int i=0;i<dlugoscDouble;i++)
{
cout<<"podaj doubla"<<endl;
cin>>tablicaDouble[i];
}
string napis;
cout<<"napisz cos"<<endl;
cin.ignore();
getline(cin,napis);
int dlugoscString=napis.length();
cout<<biggest(tablicaInt,dlugoscInt)<<endl;
cout<<biggest(tablicaDouble,dlugoscDouble)<<endl;
cout<<biggest(napis,dlugoscString)<<endl;
return 0;
}
template <typename T>
T biggest(T tab[],int n)
{
T maks;
maks=tab[0];
for(int i=0;i<n;i++)
{
if (maks<tab[i])
maks=tab[i];
}
return maks;
}
template <> string biggest<string>(string wyraz[],int dlug)
{
string maks;
maks[0]=wyraz[0];
for(int i=0;i<dlug;i++)
{
if(maks[0]<wyraz[i])
maks[0]=wyraz[i];
}
return maks[0];
}