Syntaxfehler C2061
-
Hi. Ich weiß ich bin noch neu und vielleicht bin ich gerade super dumm, aber ich habe 2 Klassen und möchte die eine Klasse in der anderen inform eines Parameters einer Methode aufrufen. Allerdings bekomme ich eine Fehler Meldung und weiß nicht wie ich diesen Fehler beheben kann.
Anbei schicke ich euch den betroffenen Code und die Fehlermeldung.
Vielen Dank und tut mir leid für den Fehler<3
Der Code von Klasse "Playground"(Datei= Playground.h):
#pragma once #include <iostream> #include <string> #include "Player.h" using namespace std; class Playground { public: int field[3][3]; bool checkField(int pN); void set(int f, Player iD); };
Der Code der Klasse "Player"(Datei= Player.h):
#pragma once #include <iostream> #include <string> #include "Playground.h" using namespace std; class Player { public: int ID; bool isUP = false; void set(int f, Playground pT); };
Fehlermeldung:
C2061 Syntaxfehler: Bezeichner "Player" in Playground.h Zeile 14
C2061 Syntaxfehler: Bezeichner "Playground" in Player.h Zeile 15Die Klassen werden natürlich wie im Code erkennbar in unterschiedlichen Klassen gespeichtert.
-
Ring-Include?
https://www.c-plusplus.net/forum/topic/322510/ringincludeAus einem anderen früheren Thread:
Ganz einfach; Header-Datei von Klasse X (x.h) bindet Header-Datei von Klasse Y (y.h) mit (#include "y.h") ein, weil z.B. Klasse X eine Unterklasse von Klasse Y ist oder darauf anderweitig referenziert.
Nun hat aber hat die Header-Datei von Klasse Y aus irgendeinem Grund auch das Bedürfnis von Klasse X zu wissen. Wenn jetzt in der Header-Datei von Klasse Y eine "#include "x.h" vorgenommen wird, spricht man von zirkuläre Abhängigkeiten.Was passiert? Der Kompiler "ließt" eine Header-Datei, z.B. "x.h". Bevor er etwas von Klasse X mitbekommt, ließt er das dortige #include "y.h". Dort findet er vor der Klassendeklaration von Klasse Y ein #include "x.h", also ließt der Kompiler die Header-Datei von Klasse X ein und findet…. Oh mir schwirrt schon der Kopf.
Lösung in vielen Fällen; wo es geht, im Header abhängige Klassen als forward deklarieren und in der Source-Datei mit #include einbinden.
-
Danke. Es tut mir leid ich bin wirklich noch bad in c++. Bringe es mir gerade selber bei. Ich probiere es. DAnke
-
Es klappt. Danke