2015-01-15 3 views
-2

Ну, вопрос прост, могу ли я объявить пространство имен внутри другого пространства имен? Если да, то каков правильный термин для этого пространства имен, будет ли он называться «внутренним пространством имен» или «вложенным пространством имен» или, возможно, совсем другим?Может ли одно пространство имен быть членом другого пространства имен?

+0

Посмотрите на этот вопрос: http://stackoverflow.com/questions/3199139/nested-namespaces-in-c – Icemanind

+0

@icemanind Нет, OP запрашивает исключительно для вложенности пространств имен, Я тоже отвечаю на это). –

ответ

4

«Могу ли я объявить пространство имен внутри другого пространства имен?»

Да, вы можете гнездятся пространств имен столько, сколько вы хотите

namespace A { 
    struct thingA; 
    void funcA(); 
    namespace B { 
     struct thingC; 
     void funcB(); 
     namespace C { 
      struct thingC; 
      void funcC(); 
     } 
    } 
} 

И относятся к вышеуказанным декларациям, используя :: (масштаб) оператор:

A::thingA thingA; 
A::funcA(); 

A::B::thingB thingB; 
A::B::funcB(); 

A::B::C::thingC thingC; 
A::B::C::funcC(); 

" каков правильный термин для этого пространства имен, будет ли он называться «внутренним пространством имен» или «вложенным пространством имен» или, возможно, и совсем другое?

А также да, это обычно называется 'вложенные пространства имен'.

+1

Я проголосую за это, как только перестану быть ленивым, как ОП;) –

+0

Ты поймал меня в моём лени. – FluffyKittens

+0

@ DracoM. Ну, глядя на такие вещи, как 'std :: chrono', это должно стать очевидным. –

Смежные вопросы