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

Kopiowanie unique_ptr

Object Storage Arubacloud
+1 głos
298 wizyt
pytanie zadane 8 grudnia 2015 w C i C++ przez GameProgrammer Obywatel (1,140 p.)
Jak kopiować obiekt unique ptr do innych obiektów?

2 odpowiedzi

+3 głosów
odpowiedź 8 grudnia 2015 przez Radfler VIP (101,030 p.)
edycja 8 grudnia 2015 przez Radfler

W sensie? Sam typ std::unique_ptr jest niekopiowalny. Można go przenosić:

// a, b - obiekty typu std::unique_ptr<int>
a = std::move(b); // a przejmuje kontrolę nad obiektem, b jest pusty

A jeżeli chcesz "wyciągnąć" z niego wskaźnik na obiekt to użyj funkcji get:

// a - obiekt typu std::unique_ptr<int>, b - obiekt typu int*
b = a.get(); // a cały czas ma kontrolę nad obiektem, na który wskazuje

#EDIT Jeżeli zależy Ci na kopiowaniu, to użyj typu std::shared_ptr.

komentarz 8 grudnia 2015 przez Radfler VIP (101,030 p.)

Użyj emplace_back (C++11), a nie push_back. Jeżeli będą jeszcze jakieś błędy, to wrzuć je na pastebin i podeślij mi link. Może wtedy odkryję co jest nie tak.

komentarz 8 grudnia 2015 przez GameProgrammer Obywatel (1,140 p.)

Error    20    error C2664: 'std::shared_ptr<_Ty>::shared_ptr(std::nullptr_t)' : cannot convert parameter 1 from 'ElementalEffect' to 'std::nullptr_t'

			effect.emplace_back(dynamic_cast<ElementalEffect&>(*entity.bullet[i] -> getEffect()));

 

komentarz 8 grudnia 2015 przez Radfler VIP (101,030 p.)

Z tego co wcześniej napisałeś, to do wektora effect chcesz wpisać nowy obiekt. Spróbuj jeszcze tak:

effect.emplace_back(new ElemntalEffect(dynamic_cast<ElementalEffect&>(*entity.bullet[i]->getEffect())));

Jak to nie zadziała, to chodź na czat...

komentarz 8 grudnia 2015 przez GameProgrammer Obywatel (1,140 p.)
Działa wszystko poprawnie, dzięki :)
komentarz 8 grudnia 2015 przez Radfler VIP (101,030 p.)
To dopiero było zadanie xd
0 głosów
odpowiedź 8 grudnia 2015 przez Mikrokontroler xD Stary wyjadacz (13,500 p.)

Podobne pytania

0 głosów
1 odpowiedź 419 wizyt
+1 głos
1 odpowiedź 239 wizyt
pytanie zadane 17 października 2015 w C i C++ przez GameProgrammer Obywatel (1,140 p.)
0 głosów
3 odpowiedzi 326 wizyt
pytanie zadane 17 października 2015 w C i C++ przez GameProgrammer Obywatel (1,140 p.)

92,568 zapytań

141,424 odpowiedzi

319,630 komentarzy

61,956 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!

...