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
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Nathax« (13.08.2012, 10:06)
Dann machst du wahrscheinlich etwas falsch bei deinen Hederfiles. Nutzt du Include-Guards?Bis jetzt war bei der Pointerübergabe halt immer das Problem, dass wie ich schon im Startpost geschrieben habe, eine Kreisdeklaration stattfindet,
d.h. sich die Klassen gegenseitig deklarieren müssten.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
#ifndef CGAME_HPP #define CGAME_HPP class CGame { }; #endif // CGAME_HPP |
Na ja das ist dann aber trotzdem ein Problem, weil durch die Kreisdeklaration jede Klasse die andere kennen muss, und es daher immer dazu kommt, dass eine der beiden Klassen der anderen noch nicht bekannt ist.Wenn du diese Präprozessor Statements einfügst, sollte es kein Problem sein, wenn header A, B inkludiert und B, A.
Oder aber ich habe dich falsch verstanden.
Das kannst du durch Vorwärtsdeklaration und das Includen erst in den cpp-Files lösen:Bis jetzt war bei der Pointerübergabe halt immer das Problem, dass wie ich schon im Startpost geschrieben habe, eine Kreisdeklaration stattfindet,
d.h. sich die Klassen gegenseitig deklarieren müssten.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// game.h class CPlayer; class CGame { CPlayer* player; }; // game.cpp #include "game.h" #include "player.h" // player.h class Player { CGame* game; }; // player.cpp #include "game.h" #include "player.h" |
Werbeanzeige