Witam. Mam straszny problem dotyczący klasy szablonowej, która miałaby sortować dane niezależnie od tego co siedzi w środku. Ułatwienie jest tylko takie, że są 2 pliki - 1 tekstowy i jeden z liczbami całkowitymi. Oto kod który napisałem jednak nie kompiluje się:

#include<iostream>
#include<algorithm>
#include<vector>
#include<fstream>
#include<cstdio>
#include<string>

using namespace std;

template<class moj_typ>
class sortowacz
{
      fstream strumien_pliku;
      moj_typ roboczy;
      public:
             sortowacz()
             {
             cout<<"stworzylem obiekt";
             }
             ~sortowacz()
             {
                         strumien_pliku.close();

             }
             
      vector<moj_typ> tablica_danych;            
      void otworz_plik(string plik)
      {
                        strumien_pliku.open(plik.c_str(), ios::in|ios::out);
                        if(!strumien_pliku)
      }
      
      void zaladuj();
      
      void sortoj()
      {
                         fstream strumien_pliku_koncowego;
                         if(!strumien_pliku_koncowego)
                         cout<<"nie ma takiego pliku";
                         sort(tablica_danych.begin(), tablica_danych.end());
                         strumien_pliku_koncowego.open("mojplik.txt", ios::in|ios::out);
                         for(int i=0; i<tablica_danych.size(); ++i)
                         {
                                                 strumien_pliku<<tablica_danych[i]<<" ";
                         }
                         strumien_pliku_koncowego.close();
      }
};
                 
        template<class moj_typ> void sortowacz<moj_typ>::zaladuj()
        {

                        cout<<"nie ma takiego pliku";
                       int j=0;
                       while(!strumien_pliku.eof())
                       {
                                                   strumien_pliku>>roboczy;
                                                   tablica_danych.push_back(roboczy);
                                                   strumien_pliku.seekg(j+sizeof(roboczy));
                       }
        }
                       
main()
{
      
      int z;
      sortowacz<int> obiekt;
      string nazwa;
      switch(z)
      {
      cout<<"Co chcesz zrobic:\n[1] Wprowadz nazwe pliku do posortowania\n[2] Wyjdz\n";
      cin>>z;
      case 1:
      cout<<"Podaj nazwe pliku\n";
      cin>>nazwa;
      obiekt.otworz_plik(nazwa)
      obiekt.zaladuj();
      obiekt.sortoj();
      break;
      case 2: cout<<"Nara";
      default: break;
      }
      return 0;
      system("pause");
      }
      

Samo sortowanie jest proste ale najgorszy jest ten fragment:

        template<class moj_typ> void sortowacz<moj_typ>::zaladuj()
        {

                        cout<<"nie ma takiego pliku";
                       int j=0;
                       while(!strumien_pliku.eof())
                       {
                                                   strumien_pliku>>roboczy;
                                                   tablica_danych.push_back(roboczy);
                                                   strumien_pliku.seekg(j+sizeof(roboczy));
                       }
        }

Wiem, że jest on źle napisany ale nie mam pojęcia jak w szablonie funkcji pobierać dane z pliku i zapisywać do vectora, który jest uzależniony od typu na jaki zostanie wywołany obiekt klasy. Getlinem pobiera się do stringa, ale jak trzeba będzie posortować inty to już jest beż sensu. Jeżeliby ktoś znał się na tym, to prosze o pomoc.

Z góry dziękuję.