如何处理不使用命名空间的库

时间:2016-02-20 12:15:49

标签: c++ namespaces

在我的项目中,我必须使用一个符号不在命名空间中的库。图书馆的类具有相当简短和通用的名称,例如LoggerReader。我也在我项目的自己的课程中使用了一些这些名字。

考虑我的项目符号也没有命名空间的情况。可以通过将我的代码放在命名空间中并使用限定名称(例如::LoggerMy::Logger)进行区分来解决名称冲突,但我更喜欢将库的符号命名为。我有什么方法可以强迫"强迫"将库的符号放入我选择的命名空间中?

其次,如果我想使用两个定义非命名空间Logger的不同库,该怎么办?在这种情况下,有没有办法避免命名空间冲突?

2 个答案:

答案 0 :(得分:5)

  

我有什么方法可以强迫"强迫"将库的符号放入我选择的命名空间中?

不,你不能真的这样做。我可以想象的一种方法是提供一个实际使用namespace并从LoggerExt等不同名称转发的包装API。

  

如果我想使用两个定义非命名空间Logger的不同库怎么办?

你迷路了,至少链接器会告诉你。

答案 1 :(得分:0)

我可以告诉您4个选项:

  • 确保所有代码都在命名空间内。 (这应该是给定的)
  • 联系指定库的开发人员,让他们了解它等待并希望获得更新版本。 (适当的沟通和耐心)
  • 自己重写整个库,将其完全封装在命名空间中。 (祝你好运,除非你知道你在做什么)
  • 找到一个新的,更好的库,它与您当前使用的库相当,它将提供您所需的所有功能,并且设计得很好。 (涉及很多研究,家庭作业和阅读,但最终可能会得到回报)