Referenz zwischen Klassen
-
hallo
ich habe 2 Klassen und möchte von Arbeiter einen Zeiger auf Fahrzeug haben
class Arbeiter { Fahrzeug *hallo; };class Fahrzeug { };Fehler:
error C2143: Syntaxfehler: Es fehlt ';' vor '*'
error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
-
class Fahrzeug; class Arbeiter { Fahrzeug *hallo; }; class Fahrzeug { };Vorwärtsdeklaration ist das magische Wort.
-
thx

-
was ist aber wenn die Klasse Fahrzeug auch nen Zeiger auf Arbeiter hat?
dann kann ich doch nicht mehr die eine klasse vor der anderen machen
-
class Fahrzeug; class Arbeiter { Fahrzeug *hallo; }; class Fahrzeug { Arbeiter* fahrer; };Wo ist das Problem?
-
hab das ganze progr in einem neuen beitrag geschrieben mit fehler
-
Arbeiter.h:
class Fahrzeug; class Arbeiter { Fahrzeug *hallo; public: Arbeiter ( Fahrzeug* f ); void mache_was_mit_fahrzeug (); };Arbeiter.cpp:
#include "Fahrzeug.h" #include "Arbeiter.h" Arbeiter::Arbeiter ( Fahrzeug* f) hallo ( f ) { } void Arbeiter::mache_was_mit_fahrzeug () { //hier kannst du auf die Schnittstelle von Fahrzeug zugreifen }Fahrzeug.h:
class Fahrzeug { Arbeiter* fahrer; public: Fahrzeug (Arbeiter a); };Fahrzeug.cpp:
#include "Fahrzeug.h" #include "Arbeiter.h" Fahrzeug::Fahrzeug(Arbeiter* a ) fahrer ( a ) {}Du verschiebst somit die Implementierung in die .cpp Datei, wo es keine Probleme mehr gibt mit rekursiven Inlucdes.
-
fast der gleiche fehler wie vorher
compilerfehler
-
#include "Arbeiter.h" class Fahrzeug { Arbeiter* fahrer; public: Fahrzeug (Arbeiter* a); };Der Code war eigentlich nur Symbolisch gedacht und nicht einfach zum C/P machen.

Aber wenn du
Fahrzeug.hso anpasst, dann sollte es gehen.
-
thx 4 help
hat jetzt funktioniert