använda Namnrymdsammansättning
Best practice in programming föreslår att ny data eller funktionalitet binds i ett sanely-namngivet, unikt namnområde när det är möjligt. Detta anses vara en fördel jämfört med att dumpa allt i det globala namnområdet, eftersom namnuppslag kan uttryckligen aktiveras eller inaktiveras som ovan, symboler är konsekvent manglade utan repetitivenamingprefix eller makron etc.
tänk till exempel på ett projekt som definierar de flesta av sina klasser i namespace gtk
. Det är möjligt att anpassa namespace gtk
till namespace std
genom att använda en C++-funktion som heternamespace-komposition. Detta är vad som händer ifa använder-deklaration sätts i anamespace-definition: den importerade symbolen(S) får importeras till thecurrently active namespace(s). Till exempel:
namespace gtk{ using std::string; using std::tr1::array; class Window { ... };}
i det här exemplet importeras std::string
tillnamespace gtk
. Resultatet är att användningen av std::string
inside namespace gtk bara kan använda string
, utan det uttryckliga qualification.As en extra bonus, std::string
importeras inte till det globala namnområdet. Dessutom kan ett mer detaljerat arrangemang göras för bakåtkompatibilitet och portabilitet, varigenomusing
-deklarationerna kan förpackas i makron som är baserade på autoconf-tester till antingen ”” eller dvs using std::string;
(beroende på om systemet harlibstdc++ i std::
eller inte). (ideas fromLlewelly och Karl Nelson)