[gelöst] Declaration syntax error?



  • Wenn ich meine Haederdatei compilieren will kommt der Fehler

    "Declaration syntax error"

    Die Haederdatei sieht so aus:

    #ifndef wechsel2_h
    #define wechsel2_h
    class flaeche
    {
    	private:
        		   float breite,laenge;
    
              public:
                           float a;
                           float b;
    
    		       flaeche();
    
    		      float area(float, float);
    
    };
    
    #endif
    

    Woran könnte es liegen?



  • in welchjer zeile kommt der fehler?

    ist er weg mit

    #ifndef wechsel2_h
    #define wechsel2_h
    ;//neu
    class flaeche
    {
    

    ?



  • Der Fehler kommt in Zeile 3, also da wo "class flaeche" steht.

    Das mit dem semicolon hat nichts gebracht. Jetzt steht der Fehler in Zeile 4 weil es ja durch das Semicolon eine Zeile nach unten gerutscht ist.



  • bei mir funktioniert dein ursprünglicher code.

    der fehler scheint in einer anderen datei zu liegen. mit dem semikolon wollte ich checken, ob du in einer anderen datei, die vorher inkludiert wird, am klassenende ein semikolon vergessen hast.



  • Hmm, so falsch isses also gar nicht. Ich hab da noch ne Deklarationsdatei wo die wechsel2.h includiert wird. vielleicht is da was. Obwohl diese Datei sich compilen lässt.

    #include "wechsel2.h"
    
    flaeche :: flaeche()
    {
    	breite=a;
            laenge=b;
    }
    
    float flaeche :: area(float breite, float laenge)
    {
    	return (breite*laenge);
    }
    

    wie gesagt, diese Datei hat keinen Fehler beim includieren/compilieren. Aber vielleicht siehst du ja was.



  • und jetzt zeig noch die andere stelle, wo die wechsel2.h inkludiert wird und die zeilen dasvor.



  • Das ist die main. Hat auch null Fehler beim compilieren

    #include "wechsel2.h"
    #include <iostream.h>
    #include <conio.h>
    #include <stdio.h>
    
    //Part 3
    
    void main(void)
    {
    
        flaeche f1;
    
        clrscr();
    
    	cout<<endl<<"Bitte geben sie die Breite ein: ";
              cin>>f1.a;
    
              cout<<endl<<"Bitte geben sie die Laenge ein: ";
              cin>>f1.b;
    
    	 cout<<endl<<"Die Fl„che betr„gt: " <<f1.area(f1.a,f1.b);
             getchar();
    
    }
    


  • bei mir gehts.

    wenn du den microsoft.compiler benutzt, dann geh mal raus und lösch die *.ncb



  • Ich hab den Borland 3.1 von 1992. Kann ich da auch irgendwas löschen damits funzt?

    Edith:

    Vielen vielen Dank dass du es bei dir zum laufen gebracht hast. Ich bin hier schon rotiert...



  • Andi S schrieb:

    Ich hab den Borland 3.1 von 1992. Kann ich da auch irgendwas löschen damits funzt?

    nee, der ist nicht so verbuggt.



  • Woran kanns dann liegen? Der Code ist ja so wie es aussieht ok. Compilieren geht auch. Ich hab das ganze als Projekt angelegt, die *h und die 2 *cpp rein, das Projektfenster markiert und dann im Compiler auf: Alle Projektfiles compilieren" gedrückt...nix. Und wenn ich sie einzeln compiliere dann geht alles bis auf die *h. Ich weiß nich mehr weiter.

    Nachmal danke dass du es bei dir zum laufen gebracht hast. Jetzt weiß ich dass es nicht an mir liegt 🙂



  • und die dateinamen sind main.cpp und wechsel2.cpp? also mit wechsel2.c würde es nicht klappen.
    aber sonst fällt mir jetzt nix mehr ein.



  • Andi S schrieb:

    Und wenn ich sie einzeln compiliere dann geht alles bis auf die *h. Ich weiß nich mehr weiter.

    die *.h soll gar nie compiliert werden!
    sie ist nur zum inkludieren da, nur doe beiden *.cpp dürfen compiliert werden.

    mich wundert's, daß es zu einem fehler kommt, wenn man's versucht. vielleicht ein scherz der borland-leute.
    wenn die beiden *.cpp klappen, ist alles in butter.



  • Es gibt eine wechsel2.h, welche die classendefinition enthält.

    Es gibt eine wechs.cpp, welche die classendeklaration enthält.

    Und es gibt eine wechsel.cpp, welche die main enthält.

    Genau in der Reihenfolge hab ich es weiter oben gepostet.



  • volkard schrieb:

    Andi S schrieb:

    Und wenn ich sie einzeln compiliere dann geht alles bis auf die *h. Ich weiß nich mehr weiter.

    die *.h soll gar nie compiliert werden!
    sie ist nur zum inkludieren da, nur doe beiden *.cpp dürfen compiliert werden.

    mich wundert's, daß es zu einem fehler kommt, wenn man's versucht. vielleicht ein scherz der borland-leute.
    wenn die beiden *.cpp klappen, ist alles in butter.

    Ja, so hab ich das auch verstanden in all den Bücher und Foren. Und bei Borland muss ich die drei Dateien in ein Projekt packen da er sonst nicht includiert beim linken...so hab ich das zumindest verstanden und ist durch tests bestätigt worden.



  • Hahaha, super danke! Ich hab die wechsel2.h aus dem Projekt rausgeworfen und dafür in den selben Ordner wie die Anderen plaziert. Und jetzt hab ich die exe!

    *hüpf* Ich könnt dich umarmen! (Hey hey, is nur ne Redewendung)

    Jipiiiiiiieeeaaaaajey Schweinebacke

    Danke.


Anmelden zum Antworten