Witam, muszę napisać program z klasą szablonową, która powinna mieć jako składnik prywatny tablicę o ilości elementów, będącą tworzoną dynamicznie. Rozmiar tej tablicy ma być w publicznym polu statycznym klasy. Oprócz tego prostą metodą, która zwraca najmniejszy element tablicy. Tak oto zrobiłem ten program:
#include <iostream>
template<class T>
class tablica
{
public:
static T rozmiar;
tablica(int roz)
{
tab=new T[roz];
rozmiar=roz;
}
~tablica(){delete [] tab;}
T& operator[](T k);
T najmniejsza();
private:
T* tab;
};
template<class T>
T tablica<T>::rozmiar=0;
template<class T>
T& tablica<T>::operator[](T k)
{return tab[(int)k];} /////////////////////////////////////////////////////////////jak to zrobić bez rzutowania?
template<class T>
T tablica<T>::najmniejsza(){
T min = tab[0];
for(int i=1; i<rozmiar; i++){
if(tab[i]<min)
min = tab[i];
}
return min;
}
int main()
{
float s;
std::cout<<"Podaj rozmiar tablicy:"<<std::endl;
std::cin>>s;
std::cout<<"Tablica int"<<std::endl;
tablica <int>i(s);
for(int j=0; j<i.rozmiar; ++j){
std::cout<<"Podaj "<<j+1<<" wartosc tablicy:"<<std::endl;
std::cin>>i[j];
}
std::cout<<"Tablica float"<<std::endl;
tablica <float>f(s);
for(int j=0; j<f.rozmiar; ++j){
std::cout<<"Podaj "<<j+1<<" wartosc tablicy:"<<std::endl;
std::cin>>f[j];
}
std::cout << "Najmniejsza wartosc tablicy(INT): " << i.najmniejsza() << std::endl;
std::cout << "Najmniejsza wartosc tablicy(FLOAT): " << f.najmniejsza() << std::endl;
return 0;
}
Moje pytanie: jak napisać ten program inaczej, bez rzutowania w definicji operatora indeksowania?
I ogólnie będę wdzięczny za pomoc w ew. poprawieniu programu.