Problem mit massen-klassen



  • wenn ich eine klasse für den spieler z.b. habe kann ich so 2 speiler nutzen:

    class C_Spieler 
    { 
     public: 
      int Team; 
      int Punkte; 
    }; 
    
    C_Spieler sp1; 
    C_Spieler sp2; 
    
    sp1.Team=1;
    sp2.Team=2;
    
    cout << sp1.Team; 
    cout << sp2.Team;
    

    wenn ich nun aber z.b. 200 einheiten haben will, würd ich das so machen:

    class C_Einheiten 
    { 
     public: 
      int Angriff; 
      int Verteidigung; 
    }; 
    
    for(int t; t<200;t++){ 
     C_Einheiten einheit[t]; 
     einheit[t].Angriff=100;
     einheit[t].Verteidigung=150;
    }; 
    
    for(int z; z<200;z++){ 
      cout << einheit[z].Verteidigung;   // <-- hier meldet er einen fehler: 
                            //     'einheit' undeclared (first use this funktion) 
    };
    

    [url]



  • Du musst das Array außerhalb der Schleife erstellen.

    class C_Einheiten
    {
     public:
      int Angriff;
      int Verteidigung;
    };
    
    C_Einheiten einheit[200]; 
    for(int t; t<200;t++){
     einheit[t].Angriff=100;
     einheit[t].Verteidigung=150;
    };
    
    for(int z; z<200;z++){
      cout << einheit[z].Verteidigung; 
    };
    


  • klasse das funktioniert.

    nemen wir an ich habe jetzt 200 einheiten erstellt

    class C_Einheiten
    anzahl=200;
    
    {
     public:
      int Angriff;
      int Verteidigung;
    };
    
    C_Einheiten einheit[anzahl]; 
    for(int t; t<anzahl;t++){
     einheit[t].Angriff=100;
     einheit[t].Verteidigung=150;
    };
    
    for(int z; z<anzahl;z++){
      cout << einheit[z].Verteidigung; 
    };
    

    wie kann ich später irgendwann weiter erstellen (also die einheiten auf z.b. 250 aufstocken)
    mit

    anzahl=250;
    C_Einheiten einheit[anzahl];
    

    gehts nicht weil ich ja schon einheit 1-200 erstellt habe



  • Dafür benötigst du einen dynamischen Container. Dafür gibts in C++ entsprechende Klassen, in deinem Fall std::vector. Du solltest dich am besten so langsam an die Standard-Library von C++ einarbeiten, die kann dir viel Arbeit erleichtern.

    CStoll hat auch einen Artikel dazu geschrieben:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html

    Bei Fragen und Probs zum vector kannst du unter dem Artikel deinen Frage stellen.



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum Andere GUIs - Qt, GTK+, wxWidgets in das Forum C++ verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten