Globale Variablen



  • Hallo,

    ist wahrscheinlich schon ein alter Hut, aber ich habe gerade Probleme mit globalen Variablen. Ich habe ein Programm mit verschiedenen Dialogfeldern und möchte auf verschiedene Variablen von überall zugreifen.

    In ein paar Foren habe ich diese Variante gefunden.

    1. Globale Variablen in Header deklarieren mit Schlüsselwort extern

    //global.h
    extern int a;
    extern int b;
    ...

    2. Dann Globale Variablen in gleichnamigen *.cpp file definieren.

    //global.cpp
    #include"global.h"

    int a = 0;
    int b = 1;
    ...

    3. Den Headerfile in die *.cpp inkludieren, wo die Variablen verwendet werden sollen.

    //app.cpp
    #include"global.h"

    a = b;

    Jetzt sollen alle Variablen ansprechbar sein. Bei mir sagt er aber, dass ich die ganzen Variablen neu definiere (bricht kompilieren ab), was nicht sein kann, da die Definition nur in der Header Datei steht. Hat jemand ne Ahnung, was das sein könnte?

    Danke schon mal...



  • Wie kommen immer alle drauf globale Variablen benutzen zu müssen, ich werd es nie verstehen 😕

    die Totsünde eines Programierers globale Variablen, warum erstellst du nicht eine Klasse die de8ine ganzen Variablen aufnimmt die du global haben wolltest und bindest eine Instance dieser in die App-Klasse deines Programmes ein, mit AfxGetApp() kannst du dann von überall drauf zu greifen und es kann mit sicherheit keine doppelten Variablen geben.



  • Wahrscheinlich fehlt ein

    #pragma once
    

    oder ein entprechendes #define in global.h.



  • Danke für den Tipp. Hört sich gut an und hab ich gleich mal ausprobiert, aber die Funktion AfxGetApp() habe ich noch nicht ganz geblickt.
    Ich habs jetzt erstmal so gemacht...

    In der Headerdatei meiner App habe ich ein Objekt der Klasse globals, die ich extra für globale variablen angelegt habe, definiert. In dieser Klasse stehen jetzt meine globalen Variablen in der Headerdatei unter public deklariert.

    In meiner Dialogklasse kann ich jetzt über die Instanz der App mit theApp.globals.meineGlobaleVariable auf die Elemente zugreifen. Ist diese Lösung schmutzig oder kann es Probleme verursachen?

    Der Pointer, den ich mit AfxGetApp() bekomme, zeigt irgendwie nicht auf mein Objekt globals, welches ich in der Headerdatei meiner App erzeugt habe. Muss man das Objekt irgendwo speziell hinpacken, damit man mit dem Pointer drauf zugreifen kann?


Anmelden zum Antworten