Witam,
Napotkałem problem podczas rozwiązywania zadań przed kolokwium z Programowania Obiektowego w C++ .
Na początek wstawię poniżej nagłówek klasy, której dotyczy zadanie.
#ifndef STRINGLIST_H
#define STRINGLIST_H
#include <list>
#include <string>
#include <iostream>
#include <utility>
class StringList
{
private:
std::list<std::string> l;
std::list<std::string>::iterator current_line; // moje pomysły, raczej zły tok myslenia
int current_word = 0; // to rowniez
public:
StringList operator+(const std::string &s);
StringList operator-(const std::string &s);
std::list<std::string> getList();
friend std::ostream& operator<<(std::ostream &os, const StringList &sl);
friend std::ostream& operator<<(std::ostream &os, const StringList &sl);
};
std::ostream& operator<<(std::ostream &os, const StringList &sl);
std::ostream& operator<<(std::ostream &os, const StringList &sl);
#endif // STRINGLIST_H
No i tresc zadania
Zadanie 4.
Zaprogramuj dla klasy StringList wyjściowy operator strumieniowy, którego kolejne wywołania tego operatora będą skutkować przepisaniem na strumień jednego, kolejnego wyrazu z napisu. Jeżeli osiągnięty zostanie koniec pierwszego należy przejść do kolejnego itd. W przypadku dojścia do końca listy działanie jest nieokreślone.
No i mam problem jak podawać na strumien po jednym wyrazie? Ok, gdyby trzeba było podać wszystkie na raz nie ma problemu, robie sobie 2 pętle i wszystko gładko działa. Ale w jaki sposób zapamiętywać w ktorym miejscu skonczyłem (tzn który wyraz powinien byc rzucony gdy wywołamy kolejny raz operator << ) ?
Podjąłem jakieś próby ze zmiennymi pomocniczymi : iterator wskazujacy na linie i int wskazujacy na numer słowa które powinno byc wyswietlone w dalej linii, ale wydaje mi się że nie tędy droga.
Będę wdzięczny za wszelkie wskazówki.