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.
    heimschmiede

    use 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!


Anmelden zum Antworten