2011-12-18 36 views
6

Ho un requisito in cui una variabile (const) deve essere disponibile in un intero cpp che comprende più classi. Ho deciso di utilizzare uno spazio dei nomi per risolvere il problema, ma incerti circa la seguente:Spazio dei nomi e variabili statiche C++

  • Devo definire questa variabile come statica?
  • È vero che posso evitare di rendere statica la variabile solo se vado con uno spazio dei nomi senza nome?
+0

Hai provato a dichiararlo sopra, al di fuori delle classi/funzioni? (senza statico ofc) – neeKo

+2

C'è una ragione per cui vuoi evitare di renderla statica? – tpg2114

+1

Se è 'const' è anche implicitamente statico. Devi usare 'extern const' per renderlo non statico. –

risposta

6
  1. Non c'è bisogno per definire la variabile come statica, o in uno spazio dei nomi anonima. Tuttavia, se non si utilizza questo oggetto al di fuori del file in cui è definito, è una buona idea ridurre l'inquinamento nello spazio dei nomi e accelerare i collegamenti (riducendo il numero di simboli che devono essere considerati dal linker).
  2. Se si dichiara una variabile in uno spazio dei nomi anonimo, sarà effettivamente statica. Non c'è bisogno di renderlo statico (anche se puoi, se vuoi). Il vantaggio degli spazi dei nomi anonimi è che puoi anche definire tipi (classi, strutture, enumerazioni, typedef), nonché variabili e funzioni statiche.
+0

Grazie, è stato molto chiaro. –

Problemi correlati