• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Referencja, funkcja globalna z parametrem, funkcja virtualna, dziedziczenie

Object Storage Arubacloud
0 głosów
258 wizyt
pytanie zadane 26 czerwca 2018 w C i C++ przez Szaki Nowicjusz (120 p.)

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;
}

 

1 odpowiedź

+1 głos
odpowiedź 26 czerwca 2018 przez RafalS VIP (122,820 p.)
Nigdzie nie widzę implementacji Kwadrat::rysuj, Kwadrat::przesun, to samo dla Prostokąta.
komentarz 26 czerwca 2018 przez Hiskiel Pasjonat (22,830 p.)
Poza tym takie pytanie. Nie powinno być np. void przesuń ovveride {} ?
komentarz 26 czerwca 2018 przez RafalS VIP (122,820 p.)
To dobra praktyka, ale override nie jest konieczne :P
komentarz 26 czerwca 2018 przez Hiskiel Pasjonat (22,830 p.)
Ok, dzięki.
komentarz 26 czerwca 2018 przez Szaki Nowicjusz (120 p.)

@RafalS, A jak przekazać obiekt jako argument do funkcji globalnej zeby funkcja "rysuj" mi działała?

komentarz 26 czerwca 2018 przez RafalS VIP (122,820 p.)
Wszystko jest pięknie tylko nie zaimplementowałeś funkcji rysuj :D. Jakim cudem to ma zadziałać jeśli wywołujesz funkcję bez implementacji :P?
komentarz 26 czerwca 2018 przez Szaki Nowicjusz (120 p.)

@RafalS,  Ale funkcja "rysuj" jest wirtualna, ona ma byc wywolana w funkcji globalnej a jako parametr fg ma byc obiekt

1
komentarz 26 czerwca 2018 przez mokrowski Mędrzec (155,460 p.)

@Szaki, hmm... przeczytaj lub obejrzyj cokolwiek z czego się uczysz. Mijasz się z materią problemu :/

Podobne pytania

0 głosów
2 odpowiedzi 245 wizyt
pytanie zadane 29 września 2015 w C i C++ przez broda Początkujący (380 p.)
0 głosów
3 odpowiedzi 393 wizyt
0 głosów
2 odpowiedzi 295 wizyt

92,575 zapytań

141,425 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...