2014-02-12 29 views
0

我需要使用裏面一個又一個的命名空間一個命名空間,我不希望讓這樣的隱藏在另一個

namespace One 
{ 
    typedef int INT; 
} 

namespace Two 
{ 
    using namespace One; 
    #include "file.h" 
    ... 
} 

int main(void) 
{ 
    Two::INT i; 
} 

file.h

namespace One 
{ 
    INT k; 
} 
進入第一個命名空間的方式

我不能file.h這種變化就是爲什麼我需要使用內部的兩個和我需要的用戶被迫使用這個符號:

int main(void) 
{ 
    Two::One::INT i; 
} 

這種不ation是強制性的,因爲在file.h中,我使用另一個附註重新定義了One中的類型,如果用戶請求與Two::type_nameTwo::One::type_name相同的類型,它將獲得具有不同內存佈局的結構。

是的,Two::One::k必須可以訪問。

+0

「我需要用戶被迫使用這個符號......」。爲什麼? – KitsuneYMG

回答

0

//命名空間可以被嵌套在這裏你可以定義裏面的另一個名字空間的一個命名空間如下:

namespace namespace_name1 { 
    // code declarations 
    namespace namespace_name2 { 
     // code declarations 
    } 
} 

//您可以通過使用resultion運營商訪問嵌套的命名空間的成員如下:

//訪問的namespace_name2

using namespace namespace_name1::namespace_name2; 

//成員訪問空間的成員:名1

using namespace namespace_name1; 

// http://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm