La direttiva using namespace è utile quando hai spazi dei nomi che identificano il tuo progetto.
Supponiamo che tu abbia un progetto che utilizza gli spazi dei nomi developerIdentifier::projectName . Quel progetto ha una classe exampleClass e un insieme di funzioni di utilità sotto lo spazio dei nomi utils . I nomi completi di questi sono developerIdentifier::projectName::exampleClass e developerIdentifier::projectName::utils .
Hai lo stub dell'intestazione exampleClass.hpp :
#include "utils.hpp"
namespace developerIdentifier {
namespace projectName {
class exampleClass
{
public:
void function1();
void function2();
};
}
}
Il file di implementazione di corrispondenza exampleClass.cpp ha using namespace developerIdentifier::projectName; scritto in alto:
using namespace developerIdentifier::projectName;
void exampleClass::function1() { return utils::frobnicate(1, 2); };
void exampleClass::function2() {};
Poiché questa dichiarazione di using namespace è nel file di implementazione, non inquinerà il namspace di alcuna classe che importa exampleClass.hpp .
Questa dichiarazione ha due vantaggi:
- Non devi scrivere firme di funzioni completamente qualificate come
void developerIdentifier::projectName::exampleClass::function1() in exampleClass.cpp .
- Non devi qualificare completamente
developerIdentifier::projectName::utils::frobnicate() in function1() .