std::vector::push_back + structure



  • Tagchen

    ich habe in meiner klasse einen std::vector<kundendaten> xy
    wenn ich ein neuen kunden hinzufügen will mach ich das so:

    xy.at(i).Vorname = "..." ;
    xy.at(i).Nachname = "..." ;
    xy.at(i).Ort = "..." ;
    

    Funktioniert soweit.

    Jetzt brauche ich aber std::vector::push_back um die neuen Daten ans Ende zu verfrachten.

    xy.push_back( ??? ).Vorname?? Hilfe!

    Bedanke mich im voraus :xmas1:



  • ???

    kundendaten kd;
    kd.Vorname = "...";
    kd.Nachname = "...";
    kd.Ort = "...";
    
    xy.push_back(kd);
    

    MfG SideWinder



  • Oder du schreibst dir einen Ctor und machst:

    xy.push_back(kundendaten("Hans", "Meier", "Springfield"));
    


  • arrr

    das habe ich auch schon probiert, geht aber auch nicht:

    //class.cpp
    void Treasure::Add ( const std::string& vorname, const std::string& nachname, const std::string& ort )
    {
        KundenDaten.Vorname = vorname ;
        KundenDaten.Nachname = nachname ;
        KundenDaten.Ort = ort ;
        Data.push_back( KundenDaten ) ;
    }
    

    Die Struktur hab ich in der .h Datei so definiert:

    //class.h
    
    class xy
    {
    //...
    private:
        struct KundenDaten
        {
    	std::string Vorname ;
    	std::string Nachname ;
    	std::string Ort ;
        };
    	std::vector<KundenDaten> Data ;
    };
    

    bekomme aber diese Fehlermeldung:

    3x error: expected unqualified-id before ‘.’ token

    Danke für deine Hilfe



  • Du musst auch erst eine Variable dieses Typs anlegen:

    KundenDaten kundenDatenVariable; // Hat bei dir gefehlt!
    
    kundenDatenVariable.Vorname = vorname ;
    kundenDatenVariable.Nachname = nachname ;
    kundenDatenVariable.Ort = ort ;
    
    Data.push_back( kundenDatenVariable ) ;
    


  • peeeeeeeeeeeinlich

    dankeee!!!



  • Ahhh, und was ich jetzt erst sehe... Du solltest die Struktur nicht in der Klasse deklarieren!

    struct ...
    {
    }
    
    class ...
    {
    };
    

Anmelden zum Antworten