Wpis z mikrobloga

Mam element, który zawiera string i listę referencji na inne elementy tego samego typu. Chciałbym stworzyć operator wypisywania, który najpierw wypisze mi string danego elementu, a później wszystkie stringi elementów z listy. Nie wiem jak to zrobić. Daję tu przykład:
https://pastebin.com/RKYp33LK
Wiem, że on nie zadziała, ale być może pomoże zrozumieć co chciałbym zrobić.

#cpp #programowanie
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@TenAnonToKlopoty: nie ma czegoś takiego jak lista referencji, generalnie referencje nie powinno się przechowywać poza stosem, są tylko wyjątkowe sytuacje kiedy można.
Albo robisz kopie, czyli lista wartości, albo używasz wskaźników: std::unique_ptr albo std::shared_ptr albo std::weak_ptr.
  • Odpowiedz
@lionbest: ja korzystam z std::reference_wrapper właśnie do przechowywania referencji. mając std::unique_ptr mam informację gdzie obiekt T należy. std:shared_ptr, że w sumie nie należy do nikogo. T* nic nie mówi. a taki std::reference_wrapper mówi, że ten obiekt należy do kogoś innego. normalnie by poszła zwykła referencja, ale właśnie w kontenerach się nie da :<

@TenAnonToKlopoty: nie pyknie tak łatwo z std::copy mając wskaźniki lub std::referencewrapper, lepiej zwykły range-for
  • Odpowiedz
@MamCieNaHita: w sumie racja to dobry sposób
Co do T* to zawsze przyjmuję że będzie żył dłużej niż obiekt i trzeba oto zadbać w obiekcie który jest jego właścicielem, ale zazwyczaj tego unikam.
  • Odpowiedz