Klassen Array and Funktion übergeben



  • Hallo ich versuche eine Sportler-Datenbank zu erstellen.

    Ich habe eine Klasse für die Kämpfer und will nun das "Kaempferprofil" ausgeben. Hier mal eine stark verkürzte Version mit nur 2 Klassenattributen.

    #include <iostream>
    #include <string>
    using namespace std;
    
    class kaempfer{
     private:
      string name;
      int siege;
     public:
      string getname(){return name;}
      int getsiege(){return siege;}
    };
    
    int main(){
     kaempfer* kliste=new kaempfer [1]; //Wird natürlich mit der SPortleranzahl wachsen
    
     //Beispielhafte Abfrage für 2 Klassenwerte
     cout<<kliste[0].getname()<<endl;
     cout<<kliste[0].getsiege()<<endl;
     return 0;
    }
    

    Wie kann ich diese Abfrage in eine Funktion integrieren, sodass ich später nur die Funktion abfragen muss? Habe es mit Pointern und Referenzen versucht, scheinbar nicht richtig.

    Soll so aussehen.

    class klasse{
    ...
    };
    
    void funktion(...){
     cout<<klasse.getname()<<endl;
    }
    
    int main(){
     klasse* kliste=new klasse [n] 
     funktion(sportlerID);
     return 0;
    }
    


  • Hallo,

    übergib den Zeiger auf das Array, sowie den Index an die Funktion, Beispiel:

    void print(kaempfer* kliste, int index)
    { 
      cout<<kliste[index].getname()<<endl;
      cout<<kliste[index].getsiege()<<endl;
    }
    


  • der pointer auf ein dynamisch alloziertes Array zeigt auf das erste Element (mit Index 0). Da herkömmliche Arrays keine Information über ihre Größe mit sich tragen, musst du für gewöhnlich bei der Weitergabe an eine Funktion einen index mit angeben. Ob das jetzt die maximale Größe des Arrays oder wie in deinem Fall der Index ist, an dem du auf das Array zugreifen willst ist egal. Verwende lieber unsigned statt int hier



  • Verwende std::vector!


Anmelden zum Antworten