Znowu ja, znowu z problemem.
W moim programie obiekt klasy 'kino' ma wektor 'repertuar' wypełniony wskaźnikami na obiekty typu 'seans'. Seans to klasa abstrakcyjna której pochodnymi są 'film' i 'zwiastun' Dla obiektu kino przeciążyłem operator[] tak, aby przeszukiwał wektor 'repertuar' w poszukiwaniu podanego tytułu i zwrócił obiekt o tym tytule.
seans kino::operator[](string t)
{
cout << "Operator [] klasy film" << endl;
cout << "Sprawdza czy kino posiada film o podanym tytule" << endl;
vector<seans*>::iterator iter1;
vector<seans*>::iterator iter2;
iter1 = repertuar.begin();
iter2 = repertuar.end();
for (;iter1 != iter2; iter1++)
{
if((*iter1)->info()==t)
{
cout << "Film o podanym tytule znajduje sie w repertuarze kina" << endl;
return (*iter1);
}
}
cout << "Nie znaleziono" << endl;
}
Niestety takie rozwiązanie nie działa gdyż seans to klasa abstrakcyjna, natomiast gdy próbuję jako typ zwracany dać film lub zwiastun, kompilator wywala błąd, że zwracam typ seans a nie typ podany. Gdzie tu logika?