Klasse in Header deklarieren
-
Warum kann man keine Klasse in einer Header-Datei deklarieren, die in einer anderen Header definiert und included wurde?
ich will eine Klasse in einer Header (Vars.h) deklarieren, die in allen weiteren CPP-Dateien zur Verfügung steht (wie eine globale Klasse). Bisher funktioniert das nur mit normalen Variabeln, aber nicht mit Klassen.
heimschmiede
-
Heimschmiede schrieb:
Warum kann man keine Klasse in einer Header-Datei deklarieren, die in einer anderen Header definiert und included wurde?
ich will eine Klasse in einer Header (Vars.h) deklarieren, die in allen weiteren CPP-Dateien zur Verfügung steht (wie eine globale Klasse). Bisher funktioniert das nur mit normalen Variabeln, aber nicht mit Klassen.
heimschmiedeuse patern Singleton:
//Vars.h class MyClass { ... }; MyClass &getMyClassInstance() { static MyClass obj; return obj; } //header1.h #include "Vars.h" void foo() { MyClass &obj = getMyClassInstance(); ... }
-
das ist ne gute idee. danke.
jetzt kann ich leider die klasse immer noch nicht in der header deklarieren. ich wollte das wie folgt anwenden können://MyClass.h class MyClass{ int x; //... }; //Vars.h #include "MyClass.h" MyClass Obj; //Unit1.cpp #include "Vars.h" Obj.x=5;
nur leider bekomme ich folgende fehlermeldung:
Fehler in Deklarationssyntax
wenn ich aber nun "MyClass Obj" in die Unit1.cpp schreibe, läuft es. aber dann komm ich von anderen cpps nicht mehr dran...
heimschmiede
-
Hallo,
// Class.h // Klassen-*Definition* der Klasse Class class Class { public: int x; ... }; // Class.cpp // Implementation der Klasse Class // ... // Vars.h // *Deklaration* eines Objekts der Klasse Class namens obj #include "Class.h" extern Class obj; // Vars.cpp // *Definition* des Objekts obj der Klasse Class Class obj; // Unit1.cpp #include "Vars.h" obj.x = 4;
-
//MyClass.h class MyClass{ int x; //... }; //Vars.h #include "MyClass.h" MyClass &getMyClassInstance() { static MyClass obj; return obj; } //Unit1.cpp #include "Vars.h" getMyClassInstance().x=5;
-
danke für die gute und schnelle Hilfe!