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

Unique i shared pointers

Object Storage Arubacloud
0 głosów
144 wizyt
pytanie zadane 28 października 2015 w C i C++ przez GameProgrammer Obywatel (1,140 p.)
Mam vector z unique pointerami do przedmiotów, po kolizji z graczem wysyłam przedmiot do metody gracza void takeItem(Item &item);

tam chcę przypisać ten wysłany przedmiot do metody item do pola ekwipunku, każde pole jest jedną instancją unique_pointer item. Ale nie da się przypisać, próbowałem zamienić to też na shared pointers.

 

Chcę osiągnąć coś takiego że z mapki się usuwa ten przedmiot i przenosi do ekwipunku, i możliwość wyrzucenia go.

1 odpowiedź

+2 głosów
odpowiedź 28 października 2015 przez adrian17 Ekspert (344,860 p.)

Czyli ogólnie chcesz przenieść unique_ptr z kontenera do kontenera? Jako że nie można kopiować unique_ptr, trzeba go przenieść przez std::move. Demo przenoszenia przedmiotu do ekwipunku:

#include <memory>
#include <vector>

int main(){
	std::vector<std::unique_ptr<int>> items, inventory;
	// stan poczatkowy
	items.emplace_back(std::make_unique<int>(123));

	auto iterator = items.begin();

	// przenoszenie miedzy kontenerami
	inventory.emplace_back(std::move(*iterator));
	items.erase(iterator);
}

 

Podobne pytania

0 głosów
1 odpowiedź 113 wizyt
pytanie zadane 3 stycznia 2016 w C i C++ przez GameProgrammer Obywatel (1,140 p.)
+2 głosów
1 odpowiedź 365 wizyt
pytanie zadane 18 kwietnia 2015 w C i C++ przez Sopri Nowicjusz (220 p.)
+1 głos
1 odpowiedź 389 wizyt
pytanie zadane 13 lutego 2023 w C i C++ przez wms500 Nowicjusz (160 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...