Aliasy przestrzeni nazw

1 września 2008

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.

Podobne notatki:

Może zainteresują Cię również następujące, pododbne notatki:

Komentarze i nawiązania (2)

Kanał RSS komentarzy

  1. Dobra, jedna rzecz o której wiedziałem :D:D:D:D

  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 [...]

Dodaj swój komentarz

Możesz użyć tych tagów XHTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Jeśli chcesz wstawić kilku linijkowy fragment kodu, użyj tagów <pre lang="x"></pre> (gdzie x język kodu np. cpp, perl, html). W ten sposób kod zostanie odpowiednio sformatowany i pokolorowany przez system.

Uwaga!

Na tym blogu działa system cache oraz filtr antyspamowy. Twój komentarz może być widoczny na stronie z pewnym opóźnieniem. Proszę o cierpliwość. Jeśli utraciłeś już wszystkie jej zasoby poinformuj mnie o tym, być może system uznał Cię za spamera ;)