globales objekt



  • Ich würde gerne von meiner consolen klasse nur ein globales objekt haben, das ich so benutzen kann wie cout, also ohne das singelton gedöns aber so, dass es nur eine instanz gibt. Gibt es da eine möglichkeit?



  • Ja, gibts.

    Wenn du mehr von deinem Problem erzählst erzähl´ ich vielleicht mehr von der Lösung.



  • In die Header-Datei:

    class Console { ... };
    
    extern Console myConsole; // Deklaration der globalen Variable
    

    In eine Source-Datei:

    Console myConsole; // Definition der Variable
    

    Überall wo du das Objekt benutzen willst, musst du die Header-Datei einbinden.



  • Es reicht einfach eine Instanz der Klasse außerdem der main-Funktion oben in der Datei eine Variable der Klasse zu instantiieren.

    class myClass {
           // irgendwas
    };
    
    myClass globale_instanz(parameter0, parameter1);
    
    main() {
      globale_instanz.etwas_tun(paramterX);
    }
    

    Arbeitet man mit mehrere Objektdateien, welche anschließend gelinkt werden, so greift man etwa auf extern zurück:

    // header.c++
    
    #ifndef _MY_CLASS_
    #define _MY_CLASS_ 1
    
    #include <iostream>
    
    class myClass {
    public:
        void print() {
            std::cout << "print" << std::endl;
        }   
    };
    
    extern myClass global_object;
    
    #endif
    
    // global.c++
    
    #include "header.h++"
    
    myClass global_object;
    
    // main.c++
    
    #include "header.h++"
    
    int main(int, char**) {
        global_object.print();
    }
    


  • Yeequ schrieb:

    Arbeitet man mit mehrere Objektdateien, welche anschließend gelinkt werden, so greift man etwa auf extern zurück

    Danke für das überflüssige Wiederholen.



  • Janjan schrieb:

    Yeequ schrieb:

    Arbeitet man mit mehrere Objektdateien, welche anschließend gelinkt werden, so greift man etwa auf extern zurück

    Danke für das überflüssige Wiederholen.

    Ich bin angefangen das zu schreiben, als du noch nicht geantwortet hattest. Abgesehen davon ist es ein bisschen ausführlicher, was ja vielleicht helfen kann.



  • Danke, geht 🙂


Anmelden zum Antworten