Dav*_*ave 1 c++ api api-design namespaces using-declaration
我正在编写一个实用程序库,它由几个"包"组成.每个包中的类都包含在各种名称空间中.我已经知道如何通过在类声明结束时自动声明使用语句来简化情况(见下文),这将避免程序员在cpp文件中执行此操作.
namespace Utility
{
class String
{
// Class Implementation
};
}
using Utility::String;
Run Code Online (Sandbox Code Playgroud)
我的理解是,如果用户包含头String.h并且String在Utility中,那么程序员将希望使用String.显然,如果有外部类链包括一堆污染命名空间的文件,那么这可能会很糟糕,所以我想到如何将它变成#define.
namespace Utility
{
class String
{
// Class Implementation
};
}
#ifdef AUTO_DECLARE_NAMESPACE
using Utility::String;
#endif
Run Code Online (Sandbox Code Playgroud)
这样,想要这种扩展功能的程序员可以获得它.
这是一个好主意还是有什么我忽略的?
如果您只是为命名空间中声明的每个名称添加using声明,那么使用命名空间是没有意义的.
让您的头文件的用户决定他们如何使用标头.如果有人想使用using声明,请让他直接在.cpp文件中执行; 这将使.cpp文件中的代码更加清晰,因为名称的来源很明显.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |