klassen automatisch erzeugen



  • hallo

    bin anfänger und hoffe jetzt nicht eine sehr zu peinliche Frage zu stellen.
    Wenn ich z.B. eine Klasse eintrag habe in der Benutzer verwaltet werden.
    Immer wenn ich einen neune datensatz erzeugen will ruf ich die klasse mit x1, x2, x3 auf.

    class eintrag
    {
    ..
    };
    
    int main(){
    eintrag x1;
    eintrag x2;
    eintrag x3;
    ...
    }
    

    wie geh ich vor wenn ich auf einmal 50 datensaetze erzeugen will?
    von x1 bis x100?

    Ich hoffe ihr wisst was ich meine.
    danke und lg
    michi



  • Wenn du wirklich unterschiedliche Namen haben willst kommst du um das Selbstschreiben nicht herum 😉
    Aber da das relativ egal sein sollte nutzt du ein Array:

    eintrag x[100];
    

    Auf die einzelnen Elemente greifst du über den Index zu:

    x[0] = ...; // das erste Element
    cout << x[34];  // das 35. Element
    

    oder was du auch immer machen willst.
    Zu beachten ist, dass die Indizes von 0 bis 99 gehen (was 100 Elementen, wie angegeben, entspricht).
    Alternativ kannst du auch std::vector<eintrag> nehmen. Dazu solltest du dich aber erst ein wenig mit der STL auseinaendersetzen.

    Gruss,
    DeSoVoDaMu



  • Wäre es nicht sinnvoller das mit Arrays zu lösen? Dann lässt sich später auch besser darauf zugreifen.

    Eintrag x[50];
    

    //Edit: 6s zu spät 😃



  • Hi.
    Ich denke dass ich das Problem welches du beschreibst verstanden habe.
    Und direkt(!) auf deine Frage kann ich dir leider keine Antwort geben, und
    da ich nicht weisst was du programmieren willst, bin ich mir nicht sicher ob meine Antwort dir bei deinem Problem weiterhilft.

    Jedoch:
    Bist du dir sicher dass du den richtigen Ansatz machst?
    Solltest du vielleicht nicht eine Klasse erzeugen, wie z.B.

    class Kartei 
    {
     eintrag 1;
     .
     .
     .
     eintrag x;
    }
    
    int main(){
    Kartei Kundenkartei
    }
    

    Das wäre ein Objektorientierter Ansatz, wo du beliebig viele "Datensätze" durch
    eine Schleife oder sonstwas IN der Klasse durch eine Funktion oder sonstiges
    erzeugen kannst. Oder brauchst du wirklich für jeden "Datensatz" ein eigenes Objekt?

    [oh, ok, Array, wieder was gelernt :)]



  • hallo
    ich würde es so machen:
    also eine klasse benutzer

    class benutzer
    {
    public:
    benutzer(string name, int alter) : m_name(name), m_alter(alter)
    {}
    string getName() { return m_name; }
    int getAlter() { return m_alter; }
    private:
    string m_name;
    int m_alter;
    };
    

    jetzt noch eine klasse die die benutzer verwaltet

    class benutzermanagement
    {
    public:
    benutzermanagement() {}
    void addBenutzer(string name, int alter)
    {
    benutzer newbenutzer(name, alter);
    m_benutzer.push_back(newbenutzer);
    }
    private:
    list<benutzer> m_benutzer;
    };
    

    und ein kleines beispiel

    benutzermanagement user;
    user.addBenutzer("Gerd", 89);
    //jetzt kannst du noch in benutzermanagement eine funktion schreiben
    //die alle personen zwischen 80-90 jahren auflistet
    

    ich hoffe ich konnte ein wenig helfen
    für die liste must du <list> includieren
    cu



  • @major
    Zur Terminologie:
    was du erzeugen willst sind Objekte nicht Klassen. Klassen sind der Bauplan, Objekte die konkrete Ausprägung.

    ruf ich die klasse mit x1, x2, x3 auf

    Du rufst hier keine Klasse. Klassen kann man nicht aufrufen. Klassen sind tot. Aufgerufen werden hier Konstruktoren und die sorgen dafür, dass die glücklichen Objekte x1, x2 und x3 entstehen.


Anmelden zum Antworten