Aktywne Wpisy
przecietny_facet +105
Elo mordy. Stylóweczka do oceny #modameska
erni13 +316
#dziendobry , ja już od rana zwiedzam piękny i słoneczny Neapol a wy dalej w tej Polsce? Nawet mi was nie żal ( ͡° ͜ʖ ͡°)
#turystyka #podroze #gownowpis
#turystyka #podroze #gownowpis
Mianowicie...
Mam klasę abstrakcyjną Object.
3 klasy dziedziczą po Object: StringObject, IntObject, DoubleObject.
Utworzyłem do tego listę, która przetrzymuje wskaźniki do obiektów typu Object.
Następnie utworzyłem zagnieżdżoną klasę iterator w klasie List i tu zaczynają sie problemy...
Gdy wrzucę mojego iteratora do pętli for(;;) to wszystko działa, natomiast gdy wrzucę ją do pętli rangeloop, wyrzuca mi błąd, który nie do końca rozumiem, bo dlaczego chce Object konwertować do iteratora?
Tutaj zamieszczam kod, ale wszystko wrzuciłem do jednego pliku, więc może być on trudny do przejrzenia xD
#programowanie #cplusplus
Object&
to powinieieć miećfor(Object& obj : list)
Edit. Jeśli tak to w jaki sposób został rozwiązany problem zwracania referencji i zwykłej "skopiowanej wartości"
@OstryKepucz: pytasz to
std::list
? ona trzyma sama w sobie obiekty przez wartośc, aleoperator*
zwraca referencję do trzymanego obiektu. przez to, że trzyma przez wartość, to średnio się nadaje do trzymania polimorficznych obiektów(chyba, że przez wskaźnik lub inteligentny wskaźnik).A co do drugiego... ogólny zamysł rozumiem.
Ale jak to ma wyglądać, Iterator ma być klasą? Iterator musi być "czegoś", musi mieć jakiś swój "begin()", a tworząc samą klasę iterator,
Zatem dlaczego mogę std liście użyć for( auto it : stdlist) i for( auto : stdlist), a u mnie po zamianie, żeby dereferencja iteratora zwracała wskaźnik (tak jak "oryginalny" iterator std::list który przetrzymuje wskaźniki ),
Komentarz usunięty przez autora
std::list
zwraca referencję do wskaźnika, więcauto&
działa.