Klasse und Instanzen



  • class TPerson
    {
      private:
      std::string vorname;
      std::string nachname;
      int alter;
    
      public:
      TPerson();
      TPerson(std::string vorname_, std::string nachname_, int alter_) :
                  vorname(vorname_), nachname(namchname_), alter(alter_) {}
      ~TPerson();
    };
    

    Also sehe es bisher dann mal so aus.....

    Diese Klasse bau ich dann in die Person.h ein, damit ich während der gesamten Laufzeit des Programmes Zugriff darauf habe.

    Aber eine andere Frage, die ich mir noch stelle ist: Wie kann ich nun jede Instanz der Klasse abspeichern und später sortiert wieder ausgeben.

    Wie kann man das genau machen ?



  • durch ein array



  • Implementier für die Klasse noch den op< und speichere die Klasse in std::vector. Dann kannst du mittels std::sort einfach den vector übergeben und bekommst ihn sortiert.



  • Nimm lieber, wie schon gesagt, einen Standardcontainer (vector, deque oder list). Wenn du nur eine anfangs unbekannte Zahl von Daten einlesen willst und später höchstens am Ende einfügen oder löschen möchtest, ist std::vector dein Freund.
    Sortierfunktionen gibt es dann gratis dazu.

    [edit]Viel zu spät und nicht vollständig 😞 [edit]



  • [edit]Viel zu spät und nicht vollständig [edit]

    Was meinste denn damit ?



  • Das war bezogen auf PuppetMaster2k. Er hat das gleiche und noch mehr gesagt und das auch noch eher. 😉



  • Ist der Standardcontainer auch bei der verketteten Liste zu gebrauchen ? - Weil ich soll diese nehmen, weils der Chef so will *g*

    😋



  • std::list ist eine verkettete Liste. Du kannst natürlich auch deine eigene Liste schreiben.



  • ich probiere es doch mal mit std::list 😉

    in "Person.h"
    müsste also nun meine Klasse drin stehen, die ich brauche.

    Wie sieht das denn nun rein codetechnisch aus, wenn man so einen Standardcontainer nimmt ?

    Ich brauch einfach mal unbedingt ein Beispiel dafür !

    Ist das ein gutes Beispiel hier ?:

    include <list>
    #include <string>
    
    struct einkaufsposten {
      std::string name;
      double einzelpreis;
      int anzahl;
    
      einkaufsposten(std::string const &n, double ep, int az) : name(n), einzelpreis(ep), anzahl(az) { }
    
      double gesamtpreis() { return anzahl * einzelpreis; }
    };
    
    class kunde {
    private:
      std::list<einkaufsposten> warenkorb;
      std::string my_name;
    
    public:
      kunde(std::string const &name) : my_name(name) { }
    
      std::string const &name() const { return my_name; }
      double gesamtsumme() const {
        double summe = 0.0;
    
        for(std::list<einkaufsposten>::const_iterator i = warenkorb.begin(); i != warenkorb.end(); ++i)
          summe += i->gesamtpreis();
    
        return summe;
      }
    
      void einkaufen(einkaufsposten &ep) { warenkorb.push_back(ep); }
    
      //...weitere Funktionen
    };
    

Anmelden zum Antworten