O ile mi wiadomo, to nie mogę zrobić tak, jak tutaj napisałem.
Jeśli stworzę klasę bazową jako abstrakcyjną, to nie mogę utworzyć wektora kolekcji, bo pisze, że nie można utworzyć klasy abstrakcyjnej.
Próbowałem też zamiast abstrakcyjnej klasę wirtualną, no i wtedu oczywiście się wywołuje metoda klasy bazowej.
Do wywołania właściwej metody dla każdej klasy potrzebowałbym typu objektu, robiąc tym sposobem,
ale nie wiem, jak ten typ wydobyć, skoro mam tylko typ Drawable.
Z tym kodem mi się nie skompiluje, bo nie mogę abstrakcyjnej klasy tworzyć w wektorze.
Drawable.h
class Drawable
{
public:
Drawable(void);
virtual ~Drawable(void);
virtual void draw(DrawingArea& c) = 0;
};
tworzenie wektora objektów, które dziedziczą Drawable.
vector<Drawable> sceneObjects;
sceneObjects.push_back(board);
sceneObjects.push_back(player1);
for (unsigned i = 0; i < sceneObjects.size(); ++i)
{
sceneObjects[i].draw(c); // rysowanie na objekcie "c".
}