Problem z tablicami. Odwołuję się do obiektów które nie istnieją.

0

Cześć, klepię grę i nie wiem jak w dobry sposób usuwac obiekty z vector'a, by potem program nie wysypywał się na poruszaniu lub rysowaniu.

kod: https://github.com/NintyS/Gra

3

nie wiem o ktory vector chodzi, kodu troche jest, wiec troche srednio by analizowac caly projekt tylko po to by Ci pomoc w jakims fragmencie.

Ale co moge powiedziec to. Nie uzywaj new i delete
lektura do poczytania
https://dsp.krzaq.cc/post/176/ucze-sie-cxx-kiedy-uzywac-new-i-delete/

i zapewne to rozwiaze Twoj problem

0

Dziękuję, jak nie uda mi się roziwiązać problemu to wrócę :)

3

jako, ze w komentarzu dopisales ze chodzi o enemies to widze tutaj blad

 for(int i = enemies.size(); i <= maxOfEnemy; ++i){

i w srodku tej petli robisz enemies.push_back(easy); w nastepnej petli (foreach) usuwasz elementy po obiekcie ktorym iterujesz. Ogolnie smierdzi mi tam UB ale, nie jestem pewien czy aby to byl ten problem.

na pewno warto do poczytania tutaj
https://stackoverflow.com/questions/3938838/erasing-from-a-stdvector-while-doing-a-for-each

5

Problemem jest linijka:

auto e = std::begin(enemies);

Po każdej modyfikacji enemies iteratory ulegają przedawnieniu i nie można już na nich polegać.
Jako, że w liniach 820-112 enemies jest modyfikowana to linijka 120 jest niezdefiniowanym zachowaniem.

Największy jednak problem, to że twoje repozytorium nie zawiera informacji o procesie budowania.
Przypuszczalnie brakuje CMakeList.txt lub czegoś analogicznego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1