【发布时间】:2021-03-01 16:52:36
【问题描述】:
我有一个链接两个共享库的 C++ 代码(比如说 foo1.so 和 foo2.so)。在这两个库中,我都有一个名为“Mesh”的类,当我尝试实例化类 Mesh 时,编译器无法知道我正在尝试使用哪一个(显然我知道我想实例化哪一个)。我收到“错误:对‘Mesh’的引用不明确”
当然,我可以更改其中一个库的源代码,将 Mesh 类包装在命名空间周围,这样就可以解决问题。不过,我想避免更改库的代码。有没有办法消除使用库的源文件中的这种歧义?
谢谢你, 拉斐尔。
【问题讨论】:
-
抱歉,答案是否定的。除了使用命名空间之外,您无法区分。这就是为什么每个库命名空间被认为是一件好事。
-
这些是动态库还是静态库? This answer 提到创建 2 个动态链接库 - 每个库都静态链接到冲突库之一。
-
如果您使用动态库,则可以动态加载每个库(参见dl),然后使用句柄来区分调用。
标签: c++ namespaces