Mam listę
list<Bryla*> sc;
Bryla jest klasą abstrakcyjną z kilkoma metodami wirtualnymi, m.in.
bool hasId(string id)
Do tej listy chcę dodawać wskaźniki do obiektów klas pochodnych klasy Bryla.
Problem jest kiedy iteruję po tej liście i próbuję wywołać metodę wirtualną na jej elementach. Wyczytałem,że powinna się wywołać metoda z klasy obiektu na którym ją wywołuję,ale kompilator protestuje
bool Scena::hasId(string id)
{
bool temp=false;
for(list<Bryla*>::iterator it=sc.begin(); it != sc.end(); ++it)
if( it->getId() == id) //podkreśla it z komunikatem : expression must have pointer-to-class type
temp=true;
return temp;
}
Proszę o wyjaśnienie dlaczego tak się dzieje i jak to naprawić lub
podanie innego sposobu na przechowywanie obiektów różnych klas w jednym kontenerze jeśli ten się nie nadaje.
sformatowanie znaczników <code> - fp