【发布时间】:2018-05-18 10:36:58
【问题描述】:
我的项目使用了两个第三方开源库,两个库都定义了BDD类型,并且都不使用命名空间。
有没有办法解决名称冲突?也许强制一个库进入自定义命名空间?
附加信息:
第一个库仅使用BDD 作为类型别名(typedef int BDD),因此它不会调用BDD 上的任何方法。
【问题讨论】:
-
您可能需要为其中一个创建一些包装器,而不是
#include包装器组件标题中的冲突标题。也许是某种pimpl?这有一些混乱的开销,因为您几乎需要复制类的接口(成员和非成员函数),并将定义转发到这些函数的库版本。 -
它们是开源库吗?
-
你的意思是两个 BDD 都是
#define? -
另外,他们有编译过的组件吗?
-
但是,在您的特定场景中使用我的答案要简单得多,因此我将取消它并对其进行编辑以包含新信息。
标签: c++ namespaces