Mam dziwny błąd. Napisałem taką funkcję szablonową:
//definicja
template <class T>
T OperacjaArytmetyczna(T zm1, T zm2, AnsiString znak);
//opis
template <class T>
T TDrzewo::OperacjaArytmetyczna(T zm1, T zm2, AnsiString znak){
if(znak=="+"){
return zm1+zm2;
}
else if(znak=="-"){
return zm1-zm2;
}
else if(znak=="*"){
return zm1*zm2;
}
else if(znak=="/"){
return zm1/zm2;
}
else{ //%
return zm1%zm2;
}
}
I przy kompilacji dostaje błąd:
[C++ Error] main.cpp(182): E2060 Illegal use of floating point w linii return zm1%zm2;
A przecież to funkcja szablonowa, która może mieć dowolny typ. Jeśli więc wstawię typ int, będzie wszystko ok. Skąd więc taki błąd, skoro kompilator nie ma pojęcia o typie zmiennych zm1 i zm2?</cpp>