Vektor a usuwanie elementów - błąd podczas usuwani

0

Witam, potrzebuję pomocy z vektorami w c++
mam takie coś...

// Characters to klasa abstrakcyjne, a wektor ma być kontenerem na pochodne klasy bazowej
std::vector <Characters*> chars;
chars.push_back(new Knight(300, 300, 10, 64, 0, 32, 32, "knight"));
chars.push_back(new Rat(100, 100, 2, 0, 0, 10, 10, "rat"));

cały problem polega na tym że nie jestem w stanie usunąć elementów, dodawanie elementów działa bez problemu

chars.erase(chars.begine()+1); 

sprawia że program się wysypuje ;/

chars.clear();

usuwa prawidłowo wszystkie elementy

ss błędu, kompilator nic nie krzyczy https://scontent-frt3-1.xx.fbcdn.net/v/t1.0-9/16003051_1276746379037786_4851530172038427559_n.jpg?oh=4dfada7efc874c0761d31f3f62ac76a2&oe=591B7002

wrazi czego zapodaje adres githuba, w Game.cpp cały kod odpowiedzialny za problem
Z góry dziękuję! :)

1

Błąd mówi jasno że podajesz zły iterator. Jesteś pewien że nie próbujesz tego zrobić np. w pętli? Bo nie wolno ci tak usuwać w trakcie iteracji po tym kontenerze. Erase zwraca nowy iterator który powinieneś wykorzystać jeśli cos nadal tam robisz.

0

a jakieś rozwiązanie, niestety dopiero uczę się obiektówki, wektor jednego typu bez problemu ogarnąłem ale jak mam już klasę abstrakcyjną nie mam zielonego pojęcia

2

Usunięcie danych z vector robi się idiomem: https://en.wikipedia.org/wiki/Erase%E2%80%93remove_idiom

1
begine()

Czy ta metoda ma poprawną nazwę?

0

tak, tylko jak przepisywałem dodało mi się "e"

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