我正在编写一个由几个“包”组成的实用程序库。每个包中的类都包含在不同的命名空间中。我知道如何通过在类声明的末尾自动声明 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
这样,想要这种扩展功能的程序员就可以得到它。
这是一个好主意还是我忽略了什么?