Aktywne Wpisy

annlupin +11
co se słuchacie do żubra rano
źródło: annlupin7763451
Pobierz
Kolacja gotowa i do spania
#zlomkiemprzezswiat
#zlomkiemprzezswiat
źródło: image_picker_C930BFD8-B8F3-43F7-B652-B5C7365D62E8-27103-00000253D0D0168C
Pobierz




Są tu jakieś mirki które konkretnie ogarniają działanie operatora -> ? :P
@zimny_stolec: są.
A co, chciałbyś zadac pytanie?
#pdk
@zimny_stolec: no a jak inaczej? Musi zdereferencjowac (co za słowo) kontener i potem dopiero może wywoływac na obiekcie
@zimny_stolec: pytasz, czemu zeby przeprowadzic operacje na obiekcie zwracanym przez pierwsza operacje trzeba najpierw wykonac pierwsza operacje?
@edgar_k: zdereferować?
@zimny_stolec: Domyślnie, operator
->jest skrótem notacyjnym, działającym tak żea->boznacza(*a).b. Przy przeciążeniu, wymusza się sprowadzenie obiektu do zwykłego wskaźnika, i wtedya->boznacza*(a.operator->()).b.A tak ogólnie, to wstaw sobie zamiast unique poitera zwykły wskaźnik, zamień sobie użycie
_->_na*(_)._i ci wyjdzie, czym to się różni.Ten operator to chyba najgorzej zdefiniowany operator po operatorze postinkrementacji.
Jednak to nie przeszkadza bo chainowanie pointerów to coś czego powinno się unikać w C++.
operator->używa się tylko wtedy kiedy obiekt ten jest rodzajem wskaźnika. Tworzenie wskaźnika do wskaźnika nie jest prawidłowym rozwiązaniem. Czemu unique ptr nie może być w A? jeżeli dlatego że masz wiele typów to zrób szablontemplate< template class PointerHandler = std::unique_ptr > class A.Jeżeli się opakowuje wskaźnik to zazwyczaj klasa ma się zachowywać jak on.
std::unique_ptrudający iterator:template class PointerHandler = std::uniqueptr > class IteratorReferenceWrapper;
Ai tak zamierzasz zrobić unique, więc prościej zrobićnoncopyable(delete na kopjującym i operatorze przypisania). Jeżeli zamierzasz go zrobić sharable to IteratorReferenceWrapper i tak ci jest potrzebny, ale nie koniecznie na klasę tylko na konkretny iterator.