Pomoc w dokończeniu zadania - lista jednokierunkowa, przeładowanie operatora+

0

Proszę o pomoc w dokończeniu zadania.
W poniższym zadaniu mam dwa problemy, z którymi nie mogę dać sobie rady:

  1. Zdefiniowanie metody wypiszZalaczniki() prezebiegającej listę i wykorzystanie jej w metodzie wypisz()
  2. Zdefinowanie operator+(Zalacznik), który będzie dodawał załącznik do wiadomości

Bardzo proszę o jakieś wskazówki, gdyż męczę się już z tym od dłuższego czasu:/

 #include <cstdlib>
#include <iostream>

using namespace std;

enum priorytet{niski, sredni, wysoki};

class Wiadomosc
{
      class Zalacznik
      {
            public:
                     string typ;
                     Zalacznik *next;
            public:   
                      Zalacznik(string _typ)
                      :typ(_typ)
                      {
                                next = NULL;          
                      } 
                      void wypiszZalaczniki() 
                      {
                                while (next != NULL) 
                                { 
                                         cout << next -> typ << " "; 
                                         next = next -> next; 
                                } 
                      }                    
      };
     
      private: 
               string tresc;  
               priorytet priorytetWiadomosci;
               Zalacznik *zalaczniki;
               
      public:
              
               Wiadomosc()
               : tresc("brak"){};
               Wiadomosc(string _tresc)
               : tresc(_tresc){};
               Wiadomosc(string _tresc, priorytet _priorytetWiadomosci)
               : tresc(_tresc), priorytetWiadomosci(_priorytetWiadomosci){};
               ~Wiadomosc(){};
               void wypiszPriorytet() const
               {
                         if (priorytetWiadomosci == wysoki) cout << "Wysoki priorytet!!!";
                    else if (priorytetWiadomosci == sredni) cout << "Sredni priorytet.";
                    else if (priorytetWiadomosci == niski)  cout << "Niski priorytet.";
                    else                                    cout << "Nieokreslony priorytet.";
               }
               void wypisz() const
               {
                    wypiszPriorytet();
                    cout << "\n" << tresc << "\n";
                    //zalaczniki -> wypiszZalaczniki();
               }
             /*Wiadomosc operator + (string _typ)
                            { 
                                   
                                   Zalacznik* TMP = new Zalacznik; 
                                   TMP -> typ = _typ; 
                                   TMP -> next = zalaczniki; 
                                   zalaczniki = TMP; 

                             }*/                                   
};

int main(int argc, char *argv[])
{   
    Wiadomosc wiad("Malo wazna wiadomosc.", niski);
  //Wiadomosc wiad2;
  //wiad2 = wiad + "zalacznik 1";
    wiad.wypisz();
 // wiad2.wypisz();
    system("PAUSE");
    return EXIT_SUCCESS;
}
0

Wg tej konwencji która piszesz to by wyglądalo tak:

#include <cstdlib>
#include <iostream>

using namespace std;

enum priorytet {niski, sredni, wysoki};

class Wiadomosc
{
    class Zalacznik
    {
    public:
        string typ;
        Zalacznik *next;

        Zalacznik(string _typ):typ(_typ),next(NULL){}
        void wypiszZalaczniki()
        {
            cout<<typ;
            Zalacznik* traverse = next;
            while (traverse != NULL)
            {
                cout << traverse->typ << " ";
                traverse = traverse->next;
            }
        }
    };

private:
    string tresc;
    priorytet priorytetWiadomosci;
    Zalacznik *zalaczniki;

public:
    Wiadomosc()
        : tresc("brak") {};
    Wiadomosc(string _tresc)
        : tresc(_tresc),zalaczniki(NULL) {};
    Wiadomosc(string _tresc, priorytet _priorytetWiadomosci)
        : tresc(_tresc), priorytetWiadomosci(_priorytetWiadomosci),zalaczniki(NULL) {};
    ~Wiadomosc() {};
    void wypiszPriorytet() const
    {
        if (priorytetWiadomosci == wysoki)
            cout << "Wysoki priorytet!!!";
        else if (priorytetWiadomosci == sredni)
            cout << "Sredni priorytet.";
        else if (priorytetWiadomosci == niski)
            cout << "Niski priorytet.";
        else
            cout << "Nieokreslony priorytet.";
    }
    void wypisz() const
    {
        wypiszPriorytet();
        cout << "\n" << tresc << "\n";
        if(zalaczniki!=NULL)
            zalaczniki->wypiszZalaczniki();
    }
    void operator+ (string _typ)
    {
        Zalacznik* nowy = new Zalacznik(_typ);
        nowy -> next = zalaczniki;
        zalaczniki = nowy;
    }
};

int main(int argc, char *argv[])
{
    Wiadomosc wiad("Malo wazna wiadomosc.", niski);
    wiad + "zalacznik 1";
    wiad.wypisz();
    return EXIT_SUCCESS;
}
0

Dziękuję. Właśnie o to mi chodziło, a nie mogłem jakoś tego rozkminić :)

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