我有一个项目,其中需要嵌套的命名空间,但这些命名空间将分散在多个头。
//BaseDeclaration.h
namespace Base_NS
{
namespace Element_NS{};
namespace StockItem_NS{};
}这是我的Base标头的结构。
现在我想在Element.h中使用Element_NS,或者在StockItem.h中使用StockItem_NS,使用这些不连续的嵌套名称空间的最佳方式是什么?
//Element.h
namespace Base_NS{
namespace Element_NS{
int data;
}
}
or
namespace Element_NS{
int data;
}或者有没有其他合适的办法来处理这类案件。
谢谢
发布于 2015-12-17 21:32:53
直到c++17:
namespace Base_NS{
namespace Element_NS{
int data;
}
}从c++17开始:
namespace Base_NS::Element_NS {
int data;
}发布于 2015-12-17 21:40:40
首先,您不应该在BaseDeclaration.h文件中声明空的命名空间。
在共享命名空间中编写代码有两种方法。首先是一个简单的方法,您只需在每次需要的时候编写名称空间,就像您上面提到的那样。
namespace Base_NS {
namespace Element_NS {
int data;
}
}或者您可以定义宏( BaseDeclaration.h文件是一个很好的地方)
#define BEGIN_ELEMENT_NS
namespace Base_NS { \
namespace Element_NS {
#define END_ELEMENT_NS }}并使用它来代替
BEGIN_ELEMENT_NS
int data;
END_ELEMENT_NS第二种方法是在Qt和Boost等库中使用。毕竟,第二种方法允许避免名称空间名称中的拼写错误。
https://stackoverflow.com/questions/34335744
复制相似问题