Przestrzenie nazw

używanie kompozycji przestrzeni nazw

najlepsza praktyka w programowaniu sugeruje sekwestrowanie nowych danych lub funkcjonalność w sanely-nazwanej, unikalnej przestrzeni nazw, gdy jest to możliwe. Jest to uważane za przewagę nad wyrzucaniem wszystkiego w globalnej przestrzeni nazw, ponieważ wtedy wyszukiwanie nazw może być jawnie włączone lub jak wyżej, symbole są konsekwentnie zniekształcane bez powtarzających się prefiksów nazw lub makr itp.

na przykład rozważ projekt, który definiuje większość swoich klas w namespace gtk. Możliwe jest dopasowanie namespace gtk do namespace std za pomocą funkcji C++zwanej kompozycją przestrzeni nazw. Tak się dzieje IFA używając-deklaracja jest umieszczana w przestrzeni-definicja: zaimportowany symbol(y) zostanie zaimportowany do aktualnie aktywnej przestrzeni(y) nazw. Na przykład:

namespace gtk{ using std::string; using std::tr1::array; class Window { ... };}

w tym przykładzie std::stringzostanie zaimportowany donamespace gtk. Rezultatem jest to, że użyciestd::string wewnątrz przestrzeni nazw GTK może po prostu użyć string, bez wyraźnego qualification.As dodatkowy bonus,std::string nie zostanie zaimportowany do globalnej przestrzeni nazw. Dodatkowo, bardziej rozbudowany układ może być wykonany dla kompatybilności wstecznej i przenośności, przy czym deklaracjeusing mogą być zawinięte w makra, które są ustawione na podstawie autoconf-tests na „” lub np. using std::string; (w zależności od tego, czy system ma libstdc++ w std::, czy nie). (pomysły z llewelly ’ ego i Karla Nelsona)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post Złoty Wiek telewizji dobiega końca
Next post aplikacje do śledzenia okresu nie są dla kobiet