Syntaxfehler: Bezeichner ...
-
Hallo
habe folgende Fehlermeldungerror 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; }; #endifState.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 ! }; #endifHoffe 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 eucherledigt.