• 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
181 wizyt
pytanie zadane 2 października 2016 w C i C++ przez timrh Mądrala (6,010 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 (172,570 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,010 p.)
No tak! Dziękuję!

Podobne pytania

0 głosów
2 odpowiedzi 459 wizyt
0 głosów
1 odpowiedź 728 wizyt
0 głosów
1 odpowiedź 291 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez Ptaszor3 Użytkownik (900 p.)

93,605 zapytań

142,530 odpowiedzi

322,999 komentarzy

63,095 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...