'Player' does not name a type



  • Hey,

    ich bin nach mehreren Jahren abschweifungen zu anderen sprachen wieder nach C++ zurückgekehrt und habe nun vor mich intensiver damit zu beschäftigen.

    Ich habe allerdings ein Problem: Ich habe zwei Klassen, die sich gegenseitig kennen müssen, das wirft aber immer den Fehler aus:

    'Player' does not name a type

    Engine.h

    #ifndef ENGINE_H_
    #define ENGINE_H_
    
    (...)
    #include "Player.h"
    (...)
    
    class Engine {
    
    private:
    	Player* player; // <-- Die Zeile unterstreicht eclipse rot mit dem genannten Fehler
    	(...)
    
    public:
    	(...)
    };
    

    Player.h

    #ifndef PLAYER_H_
    #define PLAYER_H_
    
    #include "Engine.h"
    
    class Player {
    
    private:
    	Engine* engine;
    	(...)
    
    public:
    	Player(Engine* enginee);
    	(...)
    };
    

    Die Fehlermeldung versteh ich schon, der meint dass Player nicht (früh genug) deklariert wird. Aber wie beheb ich das?



  • Du hast eine zyklische Abhängigkeit.
    Lies dir mal folgendes durch: Definitionen und Deklarationen in C++ oder such einfach nach "zyklische Abhängigkeit"

    du hast hoffentlich das #endif nicht vergessen 🙂



  • Na zum Glück fängst du erst mal mit etwas Einfachem an, wie z.B. einer Spiele-Engine.
    Klick



  • #endif ist in beiden Dateien vorhanden, hab ich nur übersehen, weil die Dateien schon relativ groß sind und das endif natürlich am Ende steht.

    Danke dir, durch

    class Player;
    

    in Engine.h und

    class Engine;
    

    in Player.h ist die Fehlermeldung jetzt weg.

    edit:
    @cooky451
    och an großen projekten wächst man. ich hab mir schon immer hohe ziele gesetzt und im endeffekt hat bisher noch fast alles geklappt. soll ja auch nix aufwändiges werden, paar hundert bis tausend zeilen SDL-engine bauen reicht mir vorerst schon zum üben. mit programmierung an sich kenn ich mich auch gut bis sehr gut aus, nur C++ ist sehr eingestaubt bzw hab ich damals nur grob angeschaut, nix intensives mit gebaut. das wird sich jetzt ändern 🙂 ein paar probleme können dabei natürlich auftauchen

    edit2:
    Zweites Problem entfernt, hat sich erledigt. War trivial ^^"



  • Ich wollte es nur mal in den Raum werfen. 🙂

    Du versuchst nicht zufällig die gesamte Klasse in der Headerdatei zu definieren?



  • cooky451 schrieb:

    Ich wollte es nur mal in den Raum werfen. 🙂

    Du versuchst nicht zufällig die gesamte Klasse in der Headerdatei zu definieren?

    Doch das war mein zweiter Fehler.. ^^" Hab ich aber selbst eben schon bemerkt und mir an den Kopf gefasst..

    Danke dir 🙂


Anmelden zum Antworten