struct kopieren



  • moins
    schreibe eine klasse welche folgende strukturen hat:

    truct Termin
    {
    std::string strSTag;
    std::string strSDatum;
    std::string strSZeit;
    };

    struct Einladung
    {
    std::string strTops[10];
    std::string strMitglieder[20];
    std::string strFrauenbeauftr;
    std::string strDatum;
    std::string strSitzgnr;
    };

    als parameter bekommt der konstruktor die beiden strukturen von einer anderen klasse. wie weise ich diese jetzt den strukturen in meiner klasse zu? muss ich das einzeln mit jedem element der struct machen, oder kann ich das irgendwie kopieren?
    gruß
    ebrosius



  • Hallo,

    ebrosius schrieb:

    als parameter bekommt der konstruktor die beiden strukturen von einer anderen klasse. wie weise ich diese jetzt den strukturen in meiner klasse zu? muss ich das einzeln mit jedem element der struct machen, oder kann ich das irgendwie kopieren?
    gruß
    ebrosius

    Du solltest den Zuweisungsoperator, den Ctor und den Copy-Ctor überladen:

    struct Termin {
      std::string strSTag;
      std::string strSDatum;
      std::string strSZeit;
    
      Termin(const string &s1, const string &s2, const string &s3) : strSTag(s1), strSDatum(s2), strSZeit(s3) {}
    
      Termin(const Termin &t) : strSTag(t.strSTag), strSDatum(t.strSDatum), strSZeit(t.strSZeit) {}
    
      ~Termin() {}
    
      Termin& operator=(const Termin& t) {
        strSTag = t.strSTag;
        strSDatum = t.strSDatum;
        strSZeit = t.strSZeit;
        return *this;
      }
    };
    

    Dann kannst du schreiben:

    class Foo {
      Termin termin;
    
    public:
      Foo(const Termin &t) : termin(t) {}
      //usw...
    };
    
    Termin meinTermin("","",""); //bin schreibfaul ;)
    Foo f(meinTermin);
    

    MfG

    GPC



  • Übrigens: Wenn du den Copy-Ctor und op= gar nicht definierst, spendiert dir dein Compiler eine Default-Version von beidem (die kopieren die struct dann elementweise) - sofern das Standard-Verhalten möglich ist.



  • erstmal vielen dank für eure schnellen antworten 🙂
    wie sieht das mit der zweiten struct aus mit den arrays? 😞
    gruß
    ebro



  • ebrosius schrieb:

    erstmal vielen dank für eure schnellen antworten 🙂
    wie sieht das mit der zweiten struct aus mit den arrays? 😞

    Mit ner Schleife kopieren.


Anmelden zum Antworten