Mr. Miyagi Geschrieben 3. Dezember 2008 Geschrieben 3. Dezember 2008 Hi, wie der Titel schon sagt, möchte ich mehrere Klassen in einen Header unterbringen. Zum aktuellen Problem: Ich habe einen Header in den stehen mehrere Funktionen, die nicht teil einer Klasse sind. Innerhalb der Cpp-Datei befinden sich dann diese Funktionen. In der Cpp Datei selber befinden sich noch ein paar Funktionen die nicht im Header auftauchen, da man nicht auf diese zugreifen soll, wenn man den Header einbindet. Nun will ich eine Klasse hinzufügen ... Die Deklaration in der Header-Datei verläuft ohne Probleme, der Compiler meckert nicht und das Programm startet so wie es soll. Will ich nun aber in der Cpp-Datei den Constructor und Destructor hinzufügen, beendet das Programm mit der Compilermeldung: "Klasse" has not been declared" Ich hab sowohl den Header in die Cpp-Datei eingebunden (sonst würden die Funktionen davor schon nicht funktionieren), als auch den Namen der Klasse richtig geschrieben und auf Groß- und Kleinschreibung habe ich auch geachtet. Warum tut dann der Compiler trotzdem so als ob er die Klasse in der Cpp-Datei nicht kennt ? Danke schon mal im Voraus mfg Mr. Miyagi Zitieren
Klotzkopp Geschrieben 3. Dezember 2008 Geschrieben 3. Dezember 2008 Mit sehr hoher Wahrscheinlichkeit hast du etwas falsch gemacht. Was das ist, kann dir hier niemand sagen, weil du den Code nicht gezeigt hast. Zitieren
flashpixx Geschrieben 3. Dezember 2008 Geschrieben 3. Dezember 2008 Hi, wie der Titel schon sagt, möchte ich mehrere Klassen in einen Header unterbringen. Warum? Welchen Sinn soll das haben? Klassedeklaration = Header Klassenimplementation = Cpp (abgesehen von Tempates) Phil Zitieren
Mr. Miyagi Geschrieben 4. Dezember 2008 Autor Geschrieben 4. Dezember 2008 Warum? Welchen Sinn soll das haben? Der Sinn soll sein, dass man eine Art Mainheader hat, den man einbindet und dieser dann mehrere Klassen beinhaltet. Anstatt dann alle Klassen einzeln in sein Projekt einzubinden, soll man einen großen Header einbinden können. Damit man nicht alles in eine Cpp-Datei macht, gibt es einen Header und mehrere Cpp-Dateien dazu die dann die jeweiligen Funktionen enthalten. Habe gerade ein kleines Beispiel gemacht, aber das führt er ohne Probleme aus. Werde erst einmal weiter versuchen das eigentliche Projekt auch so zum laufen zu bekommen. Zitieren
Mr. Miyagi Geschrieben 4. Dezember 2008 Autor Geschrieben 4. Dezember 2008 Hat sich schon erledigt. Habe in dem Projektordner einen Header zum DLL Export und einen für das Testen der Klassen und Funktionen. Habe die Klasse im Projektheader deklariert, aber in der Cpp-Datei den Header für den DLL Export noch zu stehen gehabt. Ist ja dann kein Wunder das die Klasse dann in der Cpp- Datei nicht erkannt wird. Na ja, war wohl gestern etwas blind auf den Augen. Danke euch ... Mr. Miyagi Zitieren
TDM Geschrieben 4. Dezember 2008 Geschrieben 4. Dezember 2008 Der Sinn soll sein, dass man eine Art Mainheader hat, den man einbindet und dieser dann mehrere Klassen beinhaltet. Anstatt dann alle Klassen einzeln in sein Projekt einzubinden, soll man einen großen Header einbinden können Main.h: #pragma once #include "class1.h" #include "class2.h" #include "classn.h" class1.cpp: #include "Main.h" class2.cpp: #include "Main.h" classn.cpp: #include "Main.h" Wo ist da das Problem? Wer die Klassen brauch includiert die Main.h. Zitieren
Klotzkopp Geschrieben 4. Dezember 2008 Geschrieben 4. Dezember 2008 Der Sinn soll sein, dass man eine Art Mainheader hat, den man einbindet und dieser dann mehrere Klassen beinhaltet. Anstatt dann alle Klassen einzeln in sein Projekt einzubinden, soll man einen großen Header einbinden können.Das ist nur dann sinnvoll, wenn man diese Klassen auch immer zusammen braucht. Man holt sich nämlich damit ein anderes Problem ins Haus: Wenn man irgendetwas an diesem "Sammelheader" ändern muss, muss man alle Quellcodedateien, die diesen Header einbinden, neu erstellen. Bei gut aufgeteilten Headern muss man nur die neu compilieren, die den geänderten Teil wirklich brauchen. Stichwort Compilezeitabhängigkeiten. Das kann bei größeren Projekten einen immensen Zeitunterschied ausmachen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.