Aliasy przestrzeni nazw
Nie wszyscy pewnie mają świadomość, że w C++ istnieje możliwość definiowania aliasów dla przestrzeni nazw. Coś jak typedef dla namespace ;)
Mechanizm ten pozwala na przypisanie innej nazwy dla istniejącej już przestrzeni nazw.
Szczególnie użyteczne przy długich nazwach, gdzie pozwala unikać ciągłego wpisywania tych nazw:
namespace my_long_namespace_name { int i; } my_long_namespace_name::i = 5; namespace my = my_long_namespace_name; my::i = 5; |
lub zagnieżdżonych przestrzeniach:
namespace my_long_namespace_name { namespace my_utils { void f() { // ... } } } my_long_namespace_name::my_utils::f(); namespace func = my_long_namespace_name::my_utils; func::f(); |
Powyższy przykład można tez rozwiązać z wykorzystaniem dyrektywy używania:
namespace func { using namespace my_utils; } |
Oczywiste jest, że alias nie może kolidować z istniejącą nazwą w danym zasięgu. W przypadku nie spełnienia tego warunku kompilator poinformuje nas o tym.
Matheos:
11/09/2008 @ 18:00:48 | #1
Dobra, jedna rzecz o której wiedziałem :D:D:D:D
MalDevBlog » Korzystanie z przestrzenie nazw w C++:
09/12/2009 @ 19:56:42 | #2
[...] dosyć duże możliwości niż się może wydawać na pierwszy rzut oka. Kiedyś wspominałem o aliasowaniu przestrzeni nazw – mechanizmie, o którym niektórzy być może nie słyszeli, a zajmują sie językiem C++ od [...]