Objekte dynamisch erzeugen



  • Hallo,
    ich hoffe ihr könnt mir weiter helfen.
    Ich habe eine Klasse und möchte davon Objekte dynamisch erzeugten.
    Funktioniert das? Und wenn ja wie?

    class Spieler
    {
    string Name;
    int Punkte;
    }

    Ich möchte, wenn ich schreibe ich habe 3 Spieler, dass dann 3 Objekte der Klasse Spieler erzeugt werden.
    Ich weiß leider nicht wie ich das realisieren kann. Nicht dynamisch ist es kein Problem, denn da kann ich ein Array anlegen und dannn die gewünschte Anzahl initialisieren.

    Danke schon mal im Voraus.

    Mfg Nino#4



  • Nino#4 schrieb:

    Hallo,
    ich hoffe ihr könnt mir weiter helfen.
    Ich habe eine Klasse und möchte davon Objekte dynamisch erzeugten.
    Funktioniert das? Und wenn ja wie?

    class Spieler
    {
    string Name;
    int Punkte;
    }

    Ich möchte, wenn ich schreibe ich habe 3 Spieler, dass dann 3 Objekte der Klasse Spieler erzeugt werden.
    Ich weiß leider nicht wie ich das realisieren kann. Nicht dynamisch ist es kein Problem, denn da kann ich ein Array anlegen und dannn die gewünschte Anzahl initialisieren.

    Danke schon mal im Voraus.

    Mfg Nino#4

    schau dir mal std::vector an, damit sollte es klappen. 🙄

    #include <iostream>
    #include <vector>
    
    class Spieler
    {
    private:
     std::string Name;
     int Punkte;
    
    public:
     std::string getName();
     void setName();
    
     int getPunkte();
     void setPunkte();
    }
    
    int main()
    {
     // vector des typs Spieler
     std::vector<Spieler> Spielerliste;
    
     //3 mal...
     for(int i=0;i=2;i++)
     {
      // hier spieler obj anlegen und "füllen" optimal über konstruktor(hab jetzt     
      // dein beispiel benutzt)
      Spieler spieler;
    
      // werte setzen
      spieler.setName("Test");
      spieler.setPunkte(i);
    
      // hier kopierst du das spieler obj dann in den vector
      Spielerliste.push_back(spieler);
     }
    
     for(auto spieler:Spielerliste)
     {
      std::cout << spieler.getName() << std::endl;
      std::cout << spieler.getPunkte() << std::endl;
     }
    }
    

    hoff das hilft dir etwas...

    lg



  • 😃

    sry hatte es eben eilig und konnte meinen beispiel code eben erst testen...
    hab 2 kleine fehler gefunden...

    nach der klasse "spieler" fehlt ein ";"

    und das:

    for(int i=0;i=2;i++)
    

    sollte, das sein: (mein fehler vertippt und nicht nochmal gelesen)

    for(int i=0;i<3;i++)
    

    so funktioniert es richtig ...
    so jetzt sollte es passen... 🤡

    lg



  • Hey, super für deine schnelle Antwort.
    Mit Vector hatte ich noch gar nichts auf dem Hut. Ich werde es aufjedenfall versuchen und hoffen das ich es hinbekomme.
    Ansonsten werde ich mich einfach nochmal melden.

    Danke für die Antwort.

    Mfg Nino#4


Anmelden zum Antworten