【发布时间】:2011-07-06 05:15:36
【问题描述】:
我正在编写一个由几个“包”组成的实用程序库。每个包中的类都包含在不同的命名空间中。我知道如何通过在类声明的末尾自动声明 using 语句来简化这种情况(见下文),这将避免程序员在 cpp 文件中执行此操作。
namespace Utility
{
class String
{
// Class Implementation
};
}
using Utility::String;
我的理解是,如果用户包含标题 String.h 并且 String 在 Utility 中,那么程序员会想要使用 String。显然,如果有外部类链包括一堆弄脏命名空间的文件,这可能会很糟糕,所以我想如何将其改为#define。
namespace Utility
{
class String
{
// Class Implementation
};
}
#ifdef AUTO_DECLARE_NAMESPACE
using Utility::String;
#endif
这样,想要这种扩展功能的程序员就可以得到它。
这是个好主意还是我忽略了什么?
【问题讨论】:
标签: c++ api namespaces api-design using-declaration