我需要在另一个名称空间中使用一个名称空间,我不希望以这样的方式允许访问第一个名称空间
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;
}
这种表示法是强制性的,因为在file.hi中使用另一个pragma重新定义One中的类型,如果用户要求Two::type_name
和Two::One::type_name
使用相同类型,则会得到具有不同内存布局的结构。
是的,Two::One::k
必须是可访问的。
答案 0 :(得分:0)
//可以嵌套命名空间,您可以在另一个名称空间中定义一个命名空间,如下所示:
namespace namespace_name1 {
// code declarations
namespace namespace_name2 {
// code declarations
}
}
//您可以使用结果运算符访问嵌套命名空间的成员,如下所示:
//访问namespace_name2的成员
using namespace namespace_name1::namespace_name2;
//访问命名空间的成员:name1
using namespace namespace_name1;
// http://www.tutorialspoint.com/cplusplus/cpp_namespaces.htm