Aktywne Wpisy

vieniasn +81
jestem tak stary że pamiętam jak w każdą niedzielę można było iść do sklepu kupić sobie napój bez przytwierdzonej nakrętki i nie trzeba było zanosić tej butelki potem do sklepu żeby odzyskać swoje skradzione 50gr
lukasz-dit +38
Treść przeznaczona dla osób powyżej 18 roku życia...





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.