brug af Namespace sammensætning
bedste praksis i programmering foreslår sekvestrering af nye data ellerfunktionalitet i et sanely-navngivet, unikt navneområde, når det er muligt. Dette betragtes som en fordel i forhold til at dumpe alt i det globale navneområde, da navneopslag eksplicit kan aktiveres eller deaktiveres som ovenfor, symboler er konsekvent manglet uden gentagne navne præfikser eller makroer osv.
for eksempel overveje et projekt, der definerer de fleste af sine klasser i namespace gtk
. Det er muligt attilpasse namespace gtk
til namespace std
ved at bruge en C++-funktion kaldetnamespace sammensætning. Dette er hvad der sker ifa ved hjælp af-erklæring sættes i anamespace-definition: det importerede symbol(er) importeres til det aktuelt aktive navneområde(er). For eksempel:
namespace gtk{ using std::string; using std::tr1::array; class Window { ... };}
i dette eksempel importeres std::string
tilnamespace gtk
. Resultatet er, at brug afstd::string
inside namespace gtk kan bare bruge string
, uden den eksplicitte qualification.As en ekstra bonus,std::string
bliver ikke importeret til det globale navneområde. Derudover kan der laves et mere detaljeret arrangement for bagudkompatibilitet og portabilitet, hvorvedusing
-deklarationerne kan pakkes ind i makroer, der er indstillet baseret på autoconf-test til enten “” eller dvs. using std::string;
(afhængigt af om systemet harlibstdc++ i std::
eller ej). (ideer fromlley og Karl Nelson)