Syntaxfehler: Bezeichner ...



  • Hallo
    habe folgende Fehlermeldung

    error C2061: Syntaxfehler: Bezeichner 'Automat'

    Keine Ahnung was ich da falsch mache... Habe mit Eclipse und VStudio versucht...

    Automat.h (soll abstract sein)

    #ifndef AUTOMAT_H
    #define AUTOMAT_H
    
    #include "State.h"
    
    class Automat {
    protected:
    	State* currentState;
    
    public:
    	virtual void readChar(char c) = 0;
    
    	virtual ~Automat() = 0;
    };
    
    #endif
    

    State.h

    #ifndef STATE_H
    #define STATE_H
    
    #include "Automat.h"
    
    class State {
    	bool endState;
    
    public:
    
    	virtual ~State(){};
    
    	virtual void read(char ch, Automat* a) = 0; // FEHLER !
    
    };
    
    #endif
    

    Hoffe jemand kann mir helfen.
    Danke schon mal.



  • Es ist wirklich unglaublich, wie viele mit dem selbem Problem kommen. 😉

    Du hast da zyklische includes.
    Lies mal den Artikel hier, dann siehst du, was du falsch machst (und natürlich, wie du das beheben kannst):
    http://www.drakon.ch/?id=&offset=3&mobile=0&show_entry=77



  • Rekursives Einbinden.

    Du bindest automat.h ein... AUTOMAT_H noch nicht deklariert, also wird AUTOMAT_H deklariert und der Code eingefügt. Teil des eingefügen Codes, wird State.h eingebunden.. Dort wird geschaut, STATE_H noch nicht deklariert, also wird STATE_H deklariert und der Code eingefügt.. Teil des eingefügten Codes wird nach AUTOMAT_H geschaut, ist schon deklariert, also wird der Inhalt von Automat.h NICHT in State.h inkludiert.

    Dasselbe wenn du es andersrum machst.

    Lösung: Fortwärtsdeklaration oder Design überdenken.



  • 👍 Danke euch

    erledigt.


Anmelden zum Antworten