C++ stl list a zapisanie stringa do pliku.

0

Witam. Mój problem wygląda następująco. W std:list, przechowuje wskaźniki na obiekty klasy Zawody. Napisałem operator wypisania, ale jak chce go wywołać to wypisuje wszystko oprócz pol które są stringami w klasie, ale jak jest "tekst" to to wypisze. I nie wiem o co chodzi ...

     Baza::~Baza()
            {
     
                    fstream plik;
     
                    plik.open("lol.txt",ios::out);
     
                    plik<<"lol"<<endl;;
                    for(iter_zawodnik=lista_zawodnik.begin();iter_zawodnik!=lista_zawodnik.end();iter_zawodnik++)
                            {
                                    plik<<(**iter_zawodnik);
                                    plik<<endl;
                            }
                    plik.close();

    };
     
    class Zawody{
           
    string nazwa;
    public:
    friend std::ostream& operator<<(std::ostream& str, const Zawody& z)
            {
                    str <<"Nazwa: "<< z.nazwa << std::endl;
                    return str;
            };
    };

Na podanie przykładzie wypisze Nazwa:, a pola klasy z.nazwa już nie.

0

może to std::endl coś miesza, bo poza wypisaniem '\n' ma dodatkowe skutki uboczne (synchronizacja IO)

0
   friend std::ostream& operator<<(std::ostream& str, const Zawody& z); // tak zostaw w klasie

// to poza klase:
std::ostream& operator<<(std::ostream& str, const Zawody& z);
            {
                    str <<"Nazwa: "<< z.nazwa << std::endl;
                    return str;
            }

może to pole z.nazwa jest po prostu puste?

0

Problem rozwiązałem. Wystarczyło tylko tworzyć obiekty przez wskaźnik

Zawodnik *zawodnik1 = new Zawodnik();

i wszystko hula.

1 użytkowników online, w tym zalogowanych: 0, gości: 1