Wpis z mikrobloga

#cpp #programowanie #pytaniepoczatkujacego

Nie będę wrzucał całego kodu, bo za dużo tego - tutaj mniej więcej jak to napisałem: http://pastebin.com/uTTt4yKj
Czyli tak: mam 3 klasy pochodne dziedziczące po głównej i stworzoną tablicę typu klasy Glowna wypełnioną wskaźnikami na objekty klas pochodnych. Potem przeglądam tablicę pokolei i za każdym razem gdy trafię na konkretny obiekt (w tym przypadku na Pochodna2) - weryfikuję czy to ten obiekt sprawdzjąc wartość zmiennej - to chciałbym wywoływać metodę tej klasy. Jak to zrobić? Dzięki z góry.
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@INIM: To jest tablica obiektów, a nie wskaźników na obiekty – to przede wszystkim. A po drugie: chyba źle podchodzisz do zagadnienia, skoro chcesz upewniać się co do typu. Wygląda to code smell.
  • Odpowiedz
@Rincewind: Dzięki za odpowiedź. To jakbyś do tego podszedł? Ja zrobiłem tak, że w Glowna mam int typ i w konstruktorze mam zapisane, że każdy tworzony obiekt z klas pochodnych z automatu ma przypisany 1, 2 lub 3. Potem muszę wielokrotnie podczas programu przegladać tę tablicę i w zależności którego typu to obiekt chcę wywoływać odpowiednie metody.
  • Odpowiedz
@INIM: Obejście na gazomierzu założone specjalnie pod twój przypadek: http://ideone.com/0ca5SQ

Ale to złe podejście. Prawidłowym jest stworzenie wirtualnej metody w klasie bazowej, a w odpowiednich klasach pochodnych overridowanie jej zachowaniem właściwym klasie pochodnej. Zaraz podam przykład.
  • Odpowiedz
@INIM: Jeśli to pomoƶe: staraj się zaprogramować to tak, abyś w przyszłości mógł napisać klasę dziedziczącą po interfejsie, wrzucić ją do .dll i uƶywać jako plugin - nie zmieniając zupełnie kodu bazowego.
  • Odpowiedz