首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不连续的嵌套命名空间

不连续的嵌套命名空间
EN

Stack Overflow用户
提问于 2015-12-17 21:26:22
回答 2查看 171关注 0票数 1

我有一个项目,其中需要嵌套的命名空间,但这些命名空间将分散在多个头。

代码语言:javascript
复制
//BaseDeclaration.h
namespace Base_NS
{
namespace Element_NS{};
namespace StockItem_NS{};
}

这是我的Base标头的结构。

现在我想在Element.h中使用Element_NS,或者在StockItem.h中使用StockItem_NS,使用这些不连续的嵌套名称空间的最佳方式是什么?

代码语言:javascript
复制
//Element.h
namespace Base_NS{
namespace Element_NS{
int data;
}
}

or 

namespace Element_NS{
int data;
}

或者有没有其他合适的办法来处理这类案件。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2015-12-17 21:32:53

直到c++17:

代码语言:javascript
复制
namespace Base_NS{
  namespace Element_NS{
    int data;
  }
}

从c++17开始:

代码语言:javascript
复制
namespace Base_NS::Element_NS {
  int data;
}
票数 4
EN

Stack Overflow用户

发布于 2015-12-17 21:40:40

首先,您不应该在BaseDeclaration.h文件中声明空的命名空间。

在共享命名空间中编写代码有两种方法。首先是一个简单的方法,您只需在每次需要的时候编写名称空间,就像您上面提到的那样。

代码语言:javascript
复制
namespace Base_NS {
namespace Element_NS {
    int data;
}
}

或者您可以定义宏( BaseDeclaration.h文件是一个很好的地方)

代码语言:javascript
复制
#define BEGIN_ELEMENT_NS 
    namespace Base_NS { \
    namespace Element_NS {

#define END_ELEMENT_NS }}

并使用它来代替

代码语言:javascript
复制
BEGIN_ELEMENT_NS
    int data;
END_ELEMENT_NS

第二种方法是在Qt和Boost等库中使用。毕竟,第二种方法允许避免名称空间名称中的拼写错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34335744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档