我正在自学C++的命名空间(来自C#背景),我真的开始觉得即使在C ++比大多数其他语言做得更好的所有事情中,嵌套命名空间也不是其中之一!
我是否正确地认为,为了声明一些嵌套命名空间,我必须执行以下操作:
namespace tier1
{
namespace tier2
{
namespace tier3
{
/* then start your normal code nesting */
}
}
}
与之相反:
namespace tier1::tier2::tier3
{
}
如何用C#实现“à la”?
当我需要进行前向声明时,情况变得更加疯狂:
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
。 - underscore_d