我正在使用一个 C++ 第三方库,它将其所有类都放在版本化命名空间中,我们称之为tplib_v44
. 他们还定义了一个通用的命名空间别名:
namespace tplib = tplib_v44;
如果使用通用命名空间在我自己的 .h 文件中前向声明库的成员...
namespace tplib { class SomeClassInTpLib; }
...我在第三方库的头文件中出现编译器错误(稍后将包含在我的 .cpp 实现文件中):
error C2386: 'tplib' : a symbol with this name already exists in the current scope
如果我使用特定于版本的命名空间,那么一切正常,但是……有什么意义呢?处理这个问题的最佳方法是什么?
[编辑]仅供未来观众参考,这是 ICU 图书馆。一个解决方案(至少在我的情况下)在对已接受答案的评论中。