我只是自学C ++命名空间(来自C#背景),并且我真的开始认为,即使C ++比所有其他语言都有更好的功能,嵌套命名空间也不是其中之一!
我是否正确认为,为了声明一些嵌套的名称空间,我必须执行以下操作:
namespace tier1
{
namespace tier2
{
namespace tier3
{
/* then start your normal code nesting */
}
}
}
相对于:
namespace tier1::tier2::tier3
{
}
C#?
当我需要转发声明时,这会变得更加疯狂:
namespace tier1
{
namespace tier2
{
namespace forward_declared_namespace
{
myType myVar; // forward declare
}
namespace tier3
{
/* then start your normal code nesting */
class myClass
{
forward_declared_namespace::myType myMember;
}
}
}
}
请记住,我开发的典型系统包括:
MyCompany::MySolution::MyProject::System::[PossibleSections]::Type
这就是为什么您不会在C ++示例中看到太多使用命名空间的原因吗?还是通常只有单个(非嵌套)名称空间?
更新
对于任何有兴趣的人,这就是我最终解决此问题的方式。
namespace tier1::tier2::tier3
。