[DevCpp] Klassenmember in andere Datei auslagern tut nicht



  • Hallo,
    ich habe eine main.cpp mit dem Einsprungspunkt. Jetzt habe ich noch zwei Dateien angelegt und da eine Klasse reingepackt. Eine Headerdatei mit den Prototyen etc, und eine .cpp mit den Klassemembern:

    main.cpp
    
    #include<header.h>
    using namespace std;
    int main(int arcs, char *argv[])
    {
      Klasse c;
      c.Tuwas();
    }
    
    class.h
    
    class Klasse
    {
        public: 
        Klasse();
        ~Klasse();
        void Tuwas();
    };
    
    class.cpp
    
    Klasse::Klasse()
    {}
    Klasse::Tuwas()
    {//Tuwas
    }
    

    Ich weiß zwar jetzt nicht ob das so vom Syntax stimmt, ich habe es gekürzt, aber es geht nicht, es kommt folgenden Fehlermeldung: "main.cpp: `Klasse' undeclared (first use this function)"
    Was bedeutet das?
    Warum geht es wenn ich den Inhalt der class.cpp unter die Funktion main kopiere und in der class.cpp ausklammere???
    Ich hoffe das ist das richte Forum 😕

    Edit:
    Kann es sein, dass ich die class.cpp explizit inkludieren muss?

    Lutz



  • Lutz schrieb:

    Kann es sein, dass ich die class.cpp explizit inkludieren muss?
    Lutz

    Nicht die CPP, sondern die H. dies musst Du auch in der Klassen-CPP machen.
    In die class.cpp gehört

    #include "class.h"
    

    Diese Zeile muss auch in die main.cpp oder main.h.

    In die class.h sollte man die ganze Klassendeklaration noch in #ifdef, #define und #endif setzen:

    //class.h
    
    #ifndef eindeutiger_bezeichner
    #define eindeutiger_bezeichner
    class Klasse
    {
        public: 
        Klasse();
        ~Klasse();
        void Tuwas(); // nur der Schönheit willen, könnte man hier void tuwas(void); schreiben
    }; 
    #endif
    

    Joe_M.



  • Ja wenn ich in die main.cpp noch die headerdatei inkludiere, geht es einwandfrei. Besten Dank!

    Das mit dem Define ist doch, dass Code nicht zwei mal inkludiert wrid, oder?

    Lutz




Anmelden zum Antworten