Hur man deklarerar en global variabel som kan användas i hela programmet

Hur man deklarerar en global variabel som kan användas i hela programmet
global.h
extern int myVar;

global.cpp
#include "global.h"
int myVar = 0;  // initialize

class1.cpp
#include "global.h"
...

class2.cpp
#include "global.h"
...

class3.cpp
#include "global.h"
...

MyVar kommer att vara känd och användbar i varje modul som en global variabel. Du behöver inte ha global.cpp. Du kan initiera myVar i vilken som helst av klassen .cpp men jag tror att detta är renare för större program.


Även om jag skulle vilja undvika globala variabler som pesten eftersom vår programvara inte kan multitrådas effektivt på grund av det stora beroendet av globala variabler, har jag några förslag:

Använd en Singleton. Det låter dig hålla koden och åtkomsten ren. En del av problemet med en global variabel är att du inte vet vilken kod som har ändrat den. Du kan ställa in värdet på global någonstans i din funktion med hopp om att ingen annan kommer att ändra det, men fungerar dina kodanrop, fooA, ändrar det och nu är din kod a) trasig och b) svår att felsöka.

Om du måste använda en global variabel utan att röra singelmönstret, titta på fupsducks svar.


Om du inte tänker använda Singleton-mönstret som Lyndsey föreslår, använd åtminstone en global funktion (inuti ett namnområde) för att komma åt variabeln. Detta kommer att ge dig mer flexibilitet i hur du hanterar den globala enheten.

// mymodule.h
namespace mynamespace // prevents polluting the global namespace
{
   extern int getGlobalVariable();
}

// mymodule.cpp
namespace mynamespace
{
   int myGlobalVariable = 42;

   int getGlobalVariable()
   {
      return myGlobalVariable;
   }
}