Należy zadeklarować klase "figura" z funkcjami czysto wirtualnymi "rysuj" i "przesuń". Klasy pochodne z funkcjami wirutalnymi o tej samej nazwie. Należy zdefiniować funkcję globalną której parametrem jest referencja do klasy abstrakcyjnej i która wywołunie funkcję wirtualna "rysuj" z odpowiedniej klasy w zależności od obiektu przekazywanego do funkcji globalnej.
Kompilator pokazuje mi 2 błędy z referencja, jeden jest z linkerem.
class Figura{
public:
int x;
int y;
virtual void rysuj()=0;
virtual void przesun()=0;
};
class Kwadrat:public Figura{
public:
Kwadrat(int bok)
{
bok=x;
}
virtual void rysuj();
virtual void przesun();
};
class Prostokat:public Figura{
public:
Prostokat(int bok1, int bok2)
{
bok1=x;
bok2=y;
}
virtual void rysuj();
virtual void przesun();
};
void rysuj_globalna(Figura *f)
{
f->rysuj();
}
int main(int argc, const char * argv[]) {
Figura *f;
Kwadrat kw(4);
Prostokat pr(3,5);
f = &kw;
return 0;
}