Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Destruktor, vector


OczkoSX

Rekomendowane odpowiedzi

Opublikowano

Hej. Na początek macie link do kodu: 

http://pastebin.com/zL2WRDpv

Mam problem. Output tego kodu to:

Bullet at x: 30 y: 40 with velocity: 25 created. Player is a shooter: 1
Bullet removed! 
Bullet at x: 0 y: 0 with velocity: 30 created. Player is a shooter: 0
Bullet removed! 
Bullet removed! 
Bullet at x: 20 y: 0 with velocity: 31 created. Player is a shooter: 0
Bullet removed! 
Bullet removed! 
Bullet removed! 
Skończyłem tworzyć obiekty.
Bullet removed! 
Bullet removed! 
Bullet removed! 
Usunąłem obiekty.

Czemu destruktor jest wywoływany zanim usunę obiekty klasy bullet z vectora bullets?

 

//edit

Rozwiązane

 

//edit2

Jednak nie. Mój plik main.cpp wygląda teraz tak: 

http://pastebin.com/Amd6H8gs

Output jest poprawny: 

Bullet at x: 30 y: 40 with velocity: 25 created. Player is a shooter: 1
Bullet at x: 0 y: 0 with velocity: 30 created. Player is a shooter: 0
Bullet at x: 20 y: 0 with velocity: 31 created. Player is a shooter: 0
Skończyłem tworzyć obiekty.
Bullet removed! 
Bullet removed! 
Bullet removed! 
Usunąłem obiekty.

Jeśli usunę jednak bullets.reserve(3) mam taki output:

Bullet at x: 30 y: 40 with velocity: 25 created. Player is a shooter: 1
Bullet at x: 0 y: 0 with velocity: 30 created. Player is a shooter: 0
Bullet removed! 
Bullet at x: 20 y: 0 with velocity: 31 created. Player is a shooter: 0
Bullet removed! 
Bullet removed! 
Skończyłem tworzyć obiekty.
Bullet removed! 
Bullet removed! 
Bullet removed! 
Usunąłem obiekty.

Czemu tak się dzieje? Co jeśli nie mogę przewidzieć ile elementów będzie miał vector aby zrobić rezerwację?

 

//edit 3

Jednak rozwiązane :D

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Dla potomnych.

 

Czemu destruktor jest wywoływany zanim usunę obiekty klasy bullet z vectora bullets?

 

push_back może spowodować konieczność realokacji jeśli nie ma miejsca na kolejny obiekt (obiekty są wtedy kopiowane lub przenoszone jeśli istnieje taka możliwość)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...