utilizarea compoziției spațiului de nume
cele mai bune practici în programare sugerează sechestrarea de noi date saufuncționalitate într-un spațiu de nume unic, numit în mod sănătos, atunci când este posibil. Acest lucru este considerat un avantaj față de aruncarea tuturor în spațiul de nume global, deoarece căutarea numelui poate fi activată în mod explicit sau dezactivată ca mai sus, simbolurile sunt mutilate în mod constant fără prefixe sau macrocomenzi repetitive etc.
de exemplu, luați în considerare un proiect care definește majoritatea claselor sale în namespace gtk
. Este posibil să adaptați namespace gtk
la namespace std
utilizând o caracteristică C++numită compoziție namespace. Aceasta este ceea ce se întâmplă ifa folosind-declarație este pus în anamespace-definiție: simbolul importat(E) devine importate în thecurrently activ namespace(e). De exemplu:
namespace gtk{ using std::string; using std::tr1::array; class Window { ... };}
în acest exemplu,std::string
este importat în namespace gtk
. Rezultatul este că utilizareastd::string
în interiorul spațiului de nume gtk poate folosi doar string
, fără explicit qualification.As un bonus suplimentar, std::string
nu este importat în spațiul de nume global. În plus, se poate face un aranjament mai elaborat pentru compatibilitate și portabilitate înapoi, prin careusing
-declarațiile pot fi înfășurate în macro-uri care sunt setate pe baza testelor autoconf la „” sau adică using std::string;
(în funcție de faptul dacă sistemul haslibstdc++ în std::
sau nu). (idei dinllewelly și Karl Nelson)