Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.06.2003, 21:34

Probleme mit Header Dateien

Ich traue mich ja kaum wegen sowas nachzufragen, aber meine Header Dateien treiben mich in den Wahnsinn.

Und zwar habe ich in einer Header Datei eine allgemeine Engine Klasse, die alle weiteren Klassen verwaltet. Jetzt wollte ich dort eine Klasse einbinden, die sich um Direct3D kümmert. Aber der Kompiler zeigt mir immer "Fehlende Speicherklasse oder Typspezifizierer" an. Er kennt also die Grafikklasse nicht. Das geniale daran ist aber, dass er sie kennen muss.

Also ich habe eine allgemeine Header Datei, die alle weiteren Header einbindet. Dies ist auch die einzigste Header Datei, die in allen weiteren Headern eingebunden wird. D.h. am Anfang der allgemeinen Engine Header Datei wird sie eingebunden, ebenso wie in der Header Datei der Grafikklasse.

Die Reihenfolge müsste auch ok sein, die Grafikklassen Header Datei wird vor der Engine Datei eingebunden. Aber dennoch kriege ich den Fehler. Suche jetzt schon seit einer Stunde dran rum, aber kann den Fehler nicht finden.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

12.06.2003, 21:42

Ja - aber wie soll Dir hier jemand helfen, wenn Du keinen Code zeigst? Bitte schreibe hier mal den Inhalt ALLER Dateien hin.

3

12.06.2003, 21:48

Stimm schon... Ich habe das Problem aber mittlerweile lösen können. Vielleicht hätte ich früher drüber nachdenken sollen :-)

Das Problem war ganz einfach, dass ich in Engine und Grafik Header jeweils Sachen reingeschrieben hatte, die aufeinander aufbauten. Dann kann das Ganze natürlich nicht funktionieren.

4

13.06.2003, 22:15

das ganze kann eigentlich schon funktionieren indem du einfach für jede Klasse/Struktur oder sonstige Definition einen Präprozessorbefehl anwendest, der verhindert, dass dieses Objekt mehrfach deklariert wird.
So macht das auch z.B. Microsoft mit den ganzen WinAPI oder DirectX-Headern...
Every time you download a warez, god kills a programmer. So please, think of the programmers!

5

13.06.2003, 23:53

mache ich ja über #pragma once, wenn aber in zwei header dateien z.b. klassen und strukturen verwendet werden, die je in der anderen header datei definiert werden, dann kann es nicht klappen, weil eine der header dateien zuerst eingebunden werden muss und dann findet sie natürlich die struktur/klasse aus der anderen header datei noch nicht.

6

14.06.2003, 15:46

Auch dafür gibt es eine Lösung. Klassen kann man wie eine Funktion Deklarieren. Das klappt natürlich nur dann wenn man "nur" eine Referenz oder einen Zeiger für die jeweiliege Klasse verwendet, da sonst die Größe der Klasse bekannt sein muss.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

7

14.06.2003, 16:22

Darauf bin ich gar nicht gekommen. Sollte funktionieren.. Danke

Werbeanzeige