Witam, mam następujący problem:
Mam klasę wektor (dynamiczna tablica zrobiona na szablonach), klasę dane, oraz klasy dziedziczące po klasie dane: student, pracownik i doktorant.
Mam do wektora wczytać z pliku dane o osobach, więc to robię:
fstream plik("dane.txt");
wektor<dane*> tab;
dane* w;
string buf;
while(!plik.eof())
{
plik >> buf;
if(buf == "dane") w = new dane;
else if(buf == "pracownik") w = new pracownik;
else if(buf == "student") w = new student;
else if(buf == "doktorant") w = new doktorant;
(*w).read(plik);
tab.insert(w);
}
Wiadomo, że inaczej wczytujemy studenta, inaczej same dane, więc metoda read() jest wirtualna. I dalej chcę wyświetlić wczytane dane. I tu jest problem, skoro w to wskaźnik na dane, nie wiem jak to zrobić. Przeciążony operator << nie może być wirtualny, bo przecież musi być poza klasą, a do metod typu getCośtam nie mogę się dostać, bo przecież klasa dane nie ma metod zwracających np. rok studiów.
Jakiś pomysł na rozwiązanie problemu? Nie wstawiam kodu klas, bo wszystko w nich działa jak należy i wydaje mi się to zbędne w tej sytuacji, a nie chce zaśmiecać wątku. Ale jak będzie trzeba to wrzucę :)