Klasse in anderer Klasse verwenden



  • Hi zusammen, ich hab ein kleines Problem. Ich möchte ein kleines Programm schreiben das mir am Ende eine Fussballtabelle ausgibt. Ich wollte dafür eine Klasse Verein und eine Klasse Spiel nutzen. In der Klasse Verein soll der Name, Punkte und Tore gespeichert werden und in der Klasse Spiel soll jeder Spieltag durch eine csv-Datei eingelesen werden (beide Mannschaften als Strings, Tore und Spieltag als int). Mein Problem hierbei ist, dass wenn innerhalb der Klasse Spiel ein Mannschaftsname auftaucht den es als Vereinsobjekt noch nicht gibt soll dieses angelgt werden.

    class Verein{
        std::string name;
        int punkte = 0;
        int erzieltetore = 0;
        int gegentore = 0;
    };
    
    
    class Spiel{
        std::string heim;
        std::string gast;
        int heimtore;
        int gasttore;
        int spieltag;
    
    public:
         Spiel(int tag, std::string heimmannschaft, std::string gastmannschaft, int htore, int gtore){
            spieltag = tag;
            heim = heimmannschaft;
            gast = gastmannschaft;
            heimtore = htore;
            gasttore = gtore;
    
            if (!heim) // Falls Verein noch nicht vorhanden, soll dieser hier angelegt werden
                Verein heim;
    if(!gast)
    Verein gast;
    

    Danach soll dann noch der jeweilige Sieger des Spiels ermittelt werden und die entsprechende Punkt/Tore variable aktualisiert werden, soweit bin ich aber noch nicht. Könnt ihr mir vlt weiterhelfen?



  • Statt std::string in der Spiel-Klasse zu verwenden nimmst du einfach deinen Verein-Typ. Desweiteren bräuchtest du dann weder Heimtore noch Gasttore zu speichern, weil du diese Information bereits im Verein findest. Wenn heim und gast im Nachhinein vom Typ Verein sind kannst du diese direkt mit einer Member initialization list definieren. Näheres dazu findest du im Internet.

    Wenn du aus einer Liste von Vereinen ermitteln willst, wer die meisten Punkte hat, würde ich einen operator< überladen. Oder eben direkt v1.punkte > v2.punkte.



  • Was hat das mit C++/CLI zu tun?