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

02.04.2012, 11:37

Klasse wird nicht erkannt

Ich habe folgendes Problem:

Ich habe eine Hauptklasse, in deren cpp die Header meiner beiden Unterklassen mit include eingebunden sind.
In den cpp's der beiden Unterklassen ist der Header der Hauptklasse eingebunden.
Jetzt will ich eine Variable in der Unterklasse A definieren mit dem Typ Unterklasse B aber der Compiler erkennt den Typen nicht.

kürzer:
HK.h
HK.cpp mit include von HK.h und UK_A.h und UK_B.h

UK_A.h soll den Typ UK_B erkennen
UK_A.cpp mit include von HK.h

UK_B.h
UK_B.cpp mit include von HK.h


Ich hab jetzt schon ewig gesucht und der Debugger kann mir auch nicht helfen. Deshalb wollt ich fragen ob ihr eine Idee hab woran das liegen könnte.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

02.04.2012, 11:40

Hast du denn UK_B.h auch in UK_A.h inkludiert? Denn wenn nicht, kann er den Typ dort natürlich nicht kennen...

Abgesehen davon würd mich aber interessieren, wieso genau du meinst ein UK_B Objekt in UK_A haben zu wollen ;)

3

02.04.2012, 11:52

als erstes, ich hab mich verschrieben, in der HK.h hab ich die UK_A.h und UK_B.h includiert und in der HK.cpp nur die HK.h

ich das jetzt mal ausprobiert aber ich bekomme dann Fehlermeldeungen mit Typneudefinitionen (aber trotzdem danke für die schnelle Antwort :thumbsup: )

nun das andere:

der Grund ist so ähnlich wie bei den Bällen aus Breakanoid vom Buch. Ich will in meinem Spiel meherer Objekte erscheinen (oder später wieder verschwinden lassen) die alle gleich sind und auch bestimmte Merkmale haben(z.B sie können springen oder ähnliches). und ich dachte es wäre das beste einfach ein Array anzulegen welches dann die Objekte in sich trägt.

4

02.04.2012, 12:00

Lösung

Habs jetzt hinbekommen, ich hab die nur in der falschen Reinfolge includiert ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

02.04.2012, 12:14

als erstes, ich hab mich verschrieben, in der HK.h hab ich die UK_A.h und UK_B.h includiert und in der HK.cpp nur die HK.h

D.h. HK.h inkludiert jetzt UK_A.h und UK_B.h und UK_A.h sowie UK_B.h inkludieren ihrerseits ebenfalls HK.h? Das wäre ein zirkuläres include und sowas willst du normalerweise vermeiden.

ich das jetzt mal ausprobiert aber ich bekomme dann Fehlermeldeungen mit Typneudefinitionen (aber trotzdem danke für die schnelle Antwort :thumbsup: )

Der Fehler ist ziemlich typisch für zirkuläre includes ;)

der Grund ist so ähnlich wie bei den Bällen aus Breakanoid vom Buch. Ich will in meinem Spiel meherer Objekte erscheinen (oder später wieder verschwinden lassen) die alle gleich sind und auch bestimmte Merkmale haben(z.B sie können springen oder ähnliches). und ich dachte es wäre das beste einfach ein Array anzulegen welches dann die Objekte in sich trägt.

Schön und gut, das erklärt aber nicht wirklich wieso ein B in deinem A drinnen sein muss...

6

02.04.2012, 12:29

Include Aufbau

Hk.h includiert jetzt einfach zuerst UK_B.h vor UK_A.h

wenn ich das richtig verstanden habe, ist das noch immer das was du meinst.

ich kenn dummerweiser bisher nur diese Methode.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

02.04.2012, 12:36

Mach es umgekehrt. Inkludier HK.h jeweils in UK_A.h und UK_B.h und dann in den jeweiligen .cpp Files einfach nurmehr UK_A.h bzw UK_B.h.

Werbeanzeige