Wpis z mikrobloga

Mirki i Mirabelki znowu mam problem przy moim #programowanie.
Mam klasę wirtualną Postac i kilka klas które po niej dziedziczą, jedną z nich jest Pajak. Chcę sobie zrobić vector postaci zrobiłem to w pewien sposób tylko, że program od razu się wykrzacza. Dodam, że wcześniej jak próbowałem na parę sposobów to się nie kompilowało.
Mapa.h
Mapa.cpp
Postac.h
Pajak.h
Pajak.cpp

W ogóle to co chcę zrobić jest realne? A chcę użyć tego vectora, żeby mieć tam zapisane obiekty wszystkich klas które używają interfejsu z Postac.

#cpp
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@BloodDeath94: W pewien sposób czyli w jaki? Powinieneś zrobić vector
A co do tej klasy postać, to jeszcze się podłącze pod pytanie bo sam nie wiem, a często widzę podobną praktykę, jaki jest sens tworzenia metody wirtualnej typu "getHp" skoro dla wszystkich klas które dziedziczą po "Postać" będzie robiła to samo? tzn {return hp;}
  • Odpowiedz
@BloodDeath94: Tworzysz lokalny obiekt pajak i wrzucasz wskaznik na niego do wektora. W momencie kiedy konczy sie funkcja nowypokoj() lokalny obiekt jest usuwany i wskaznik w wektorze wskazuje na smieci. Tworz tak jak Ci kolega wyzej napisal.

Edit:
Nawet wczesniej jest usuwany, przy kazdym obiegu petli jest lokalny obiekt kasowany. Nie zauwazylem petli wczesniej.
  • Odpowiedz
@BloodDeath94: Tak jak napisał @simia ja jescze dodam, że chyba powinieneś w nagłówku klasy Pajak wszystkie wirtualne funkcje poprzedzić "virtual", tak jak to zrobiłeś z wykonajAkcje(), a w reszcie nie(?), dodatkowo warto używać "override", tzn virtual typ nazwa() override; w przypadku gdy usuniesz daną funkcje z klasy bazowej i będziesz chciał ją nadpisać kompilator wyrzuci ci błąd i oszczędzi niepotrzebnych problemów.
  • Odpowiedz