A kódszervezés egyik fontos módszere a névtér.
Előfordulhat, hogy két függvény neve ütközik, amit úgy oldhatsz fel, hogy külön névtérbe teszed őket.
A névterek egymásba ágyazhatók, ami segíthet a nagy kódbázisok rendszerezésében.
A névterekhez a :: scope-feloldó operátoron keresztül férsz hozzá.
Az alábbi példa két különböző foo függvény használatát mutatja be.
Ezeket úgy használod együtt, hogy az egyes hívások elé odaírod a megfelelő névtér nevét.
namespace my_ns {
int foo() {
return 44;
}
namespace my_inner_ns {
int baz() {
return 90;
}
}
}
namespace my_other_ns {
int foo() {
return -2;
}
}
int myresult{my_ns::foo() + my_other_ns::foo() * my_ns::my_inner_ns::baz()};
A mélyen egymásba ágyazott névterek túlságosan terjengősek lehetnek.
A terjengősséget megszüntetheted úgy, hogy a using kulcsszóval importálod a névteret.
Ez az összes nevet a globális névtérbe helyezi.
Hogy megmaradjon valamennyi megkülönböztetés, hasznosak lehetnek az aliasok.
int my_other_result{my_ns::my_inner_ns::baz()};
using namespace my_ns::my_inner_ns; // importing the complete namespace
int also_other_result{baz()};
namespace m = my_ns; // setting an alias
namespace o = my_other_ns;
int also_my_result{m::foo() + o::foo() * m::my_inner_ns::baz()};