Problem mit Headern und Includes
-
Fröhliche Weihnachten erstma
Und nun zum Problem

Ich hab folgende Header bzw. Includes
functions.h
... #include math.h ... class test // für diese Klasse wird math.h benötigt ...math.h
... #include functions.h ... class sin // für diese Klasse wird functions.h benötigtDer Compiler meldet jetzt: Error undefinierte Klasse 'test' verwendet.
Wie kann ich das Problem lösen?
In den Headern werden die doch eigentlich nur deklariert da ist doch egal ob die nun definiert sind oder nicht....MfG
Scarabol
-
Hast du die Header mit Präprozessorbefehlen definiert?
Also#ifndef _MATH_H_ #define _MATH_H_ ... #endifund das selbe für functions.h?
Hast du vielleicht den kompletten Code dazu?
Vielleicht liegt da der Fehler.
-
Ne, die Klassen müssen definiert werden wenn du sie in einer anderen Datei verwenden möchtest. Ahja und Includeguards benutzen.
Frohe Wheinachten! :xmas1: :xmas2:
-
Ich verweise immer wieder gerne auf meinen Blog Eintrag, da das Thema doch recht oft vorkommt:
Definitionen und Deklarationen in C++
http://www.drakon.ch/?id=&offset=1&mobile=0&show_entry=77
-
Jup hab die Präprozessorbefehle benutzt.
Der Blog scheint eine Hilfe zu sein, danke. Ich les in gerade...
Son Mist ich verwende Vererbung, also meine muss ich mein Beispiel von oben noch etwas verfeinern:
player.h
... #include star.h class player : puclic star ...star.h
... #include game.h ... class star // hier wird game benötigt ...game.h
... #include player.h ... class game // hier wird player benötigtNun sagt der Compiler in player.h ist star nicht definiert.
MfG
Scarabol
-
So, wies aussieht machst du eben genau da eine zyklische Abhängigkeit. Zwar über 3 Files, aber kommt auf das gleiche raus. Die Lösung ist aber dieselebe.
In star.h brauchst du lediglich eine Vorwärtsdeklaration, also kannst du das includen des Headers vermeiden. Und die Implementierung musst du halt in einer star.cpp machen.
Ein star sollte sowieso nicht von game abhängig sein.. Warum sollte ein start von so etwasem, wie game etwas wissen müssen?
-
Hi,
habs geschafft dein Blog war ne super Hilfe.
Bisher dachte ich es gibt nur header und cpp File aber an so eine Deklaration hab ich nicht gedacht.
Danke
Scarabol