我正在使用一个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 库。在接受的答案评论中有一个解决方案(至少在我的情况下)。