Compiler meldet Syntax-Fehler trotz korrekter Syntax



  • Hallo Leute,
    ich bastele grade an meiner erster größeren Klassenstruktur die bis zum hinzufügen
    der letzten Klasse auch so funktioniert hat wie ich wollte.
    Ich denke es liegt an den Includes. Worauf muss ich achten ?

    Danke für eure Hilfe

    Die Fehler sehen etwa so aus:

    error C2236: "class" "_Game" unerwartet. Wurde ein ";" vergessen?
    error C2143: Syntaxfehler: Es fehlt ';' vor '{'
    error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?
    error C2065: 'w2': nichtdeklarierter Bezeichner
    error C2065: 'w3': nichtdeklarierter Bezeichner
    error C2065: 'LISTofMoves': nichtdeklarierter Bezeichner
    error C2228: Links von ".Distanz" muss sich eine Klasse/Struktur/Union befinden.
    error C2065: 'LISTofMoves': nichtdeklarierter Bezeichner
    error C2228: Links von ".SumChange" muss sich eine



  • such mal im forum unter stichwort "ring includierung" oder sowas, gibt es einige threads zu.

    ich denke, du hällst dich, so wie ich auch damals, streng an das gelernte "alle includes in die .hpp". das ist aber teilweise recht unzweckmäßig. wenn du z.b. eigentlich nur ein object aus deinem include in der .cpp brauchst, bzw eine methode in der .cpp nutzt, brauchst du das nicht in der .h includen, sondern kannst es direkt in der .cpp.
    wenn z.b. in deiner .h ein parameter von einem typ erwartet wird, der includewürdig ist, kannst du genauso gut auch eine vorwärtsdeklination nutzen:

    class classtoinclude;
    
    class test
    {
       //...
       void testclass(classtoinclude x);
    }
    

    vorrausgesetzt, die funktion wird in einer .cpp definiert 🙂

    hoffe, das ist verständlich was ich meine, hab grade recht wenig zeit da ausführlicher zu erklären, deswegen mein verweis auf die sufu bzw google.

    mfg



  • error C2236: "class" "_Game" unerwartet. Wurde ein ";" vergessen?

    Spricht doch für sich selbst oder?



  • gut, die compiler msg hab ich jetzt nicht gelesen 😛
    aber ja, klingt logisch (hab mich mit obigem text eher auf seine include frage bezogen xD)



  • Die Compiler-Ausgabe ist sicherlich einer der Informativsten. Ein einzelnes vergessenes Zeichen, kann eine lange Kette an Fehlern ausgeben...

    Ja, aber das war an den Threatherrsteller gerichtet 🙂



  • anti-freak schrieb:

    class classtoinclude;
    
    class test
    {
       //...
       void testclass(classtoinclude x);
    }
    

    Hier fehlt das Semikolon genauso 😉


Anmelden zum Antworten