• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wektor się resetuje po dodaniu elementu

0 głosów
65 wizyt
pytanie zadane 2 października 2016 w C i C++ przez timrh Mądrala (6,080 p.)

Witam, napisałem klasę button, która ma wektor button_events przechowujący zdarzenia jakie mają się wywołać po spełnieniu odpowiedniego warunku. Dodaje 4 zdarzenia do obiektu klasy button więc powinny być 4 obiekty w wektorze button_events, a jest 1.

Główny plik:

	GetButton(0).AddEvent(tutaj wysyłam nowo utworzony obiekt klasy button event);

I tak 4 razy. GetButton to po prostu funkcja zwracająca dany obiekt z wektora przechowującego wszystkie obiekty klasy button.

Kod:

Button GetButton(int index)
{
	return buttons[index];
}

Klasa button:

class Button : Interfejsy nadające mu właściwości
{
private:
//składowe prywatne
public:
	std::vector<ButtonEvent> button_events;


	void AddEvent(ButtonEvent button_event);

};

Metoda Add Event:

void Button::AddEvent(ButtonEvent button_event)
{
	button_events.push_back(button_event);
	std::cout << "adding item to vector, actual vector size is: " << button_events.size() << "\n";
}

I właśnie tutaj wypisuje mi 4 razy 1. Nie wiem o co chodzi, pasowałoby to gdyby wektor był deklarowany w metodzie, ale on jest deklarowany w klasie. Proszę o pomoc.

1 odpowiedź

+2 głosów
odpowiedź 2 października 2016 przez Criss Mędrzec (168,220 p.)
wybrane 2 października 2016 przez timrh
 
Najlepsza

GetButton(0).AddEvent(tutaj wysyłam nowo utworzony obiekt klasy button event);

Wszystko jasne. GetButton nie zwraca konkretnie obiektu trzymanego w vectorze tylko jego kopie. Jeśli ma zwracać konkretny obiekt, to musisz zwracać referencje:

Button & GetButton(int index)
{
    return buttons[index];
}

 

komentarz 2 października 2016 przez timrh Mądrala (6,080 p.)
No tak! Dziękuję!

Podobne pytania

0 głosów
2 odpowiedzi 68 wizyt
0 głosów
1 odpowiedź 74 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez Ptaszor3 Użytkownik (780 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

62,471 zapytań

108,626 odpowiedzi

226,798 komentarzy

36,398 pasjonatów

Przeglądających: 192
Pasjonatów: 16 Gości: 176

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...