【发布时间】:2016-06-02 01:51:45
【问题描述】:
在我的项目中,我必须使用其符号不在命名空间中的库。该库的类具有相当短的通用名称,例如Logger 和Reader。我还在我的项目自己的类中使用了其中一些名称。
考虑我的项目符号也没有命名空间的情况。名称冲突可以通过将我的代码放在命名空间中并使用限定名称(例如::Logger 和My::Logger)进行区分来解决,但我更希望库的符号也被命名空间。有什么方法可以将库的符号“强制”到我选择的命名空间中?
其次,如果我想使用两个不同的库,它们都定义了一个非命名空间Logger。在这种情况下有什么方法可以避免命名空间冲突吗?
【问题讨论】:
-
你可以很容易地将它强制到一个命名空间中,但是库将不再链接。请改用电话,请图书馆作者解决此问题。
-
你在处理什么样的库?只有标题?访问源代码?预编译?
-
修复根本问题。该库忘记使用名称空间。让他们修复它。
-
@John_West:不,如果包含预编译,不要包装它。它只会导致无法解析的外部符号,因为库是在没有命名空间的情况下编译的。
-
“我项目的符号也没有命名空间。” - 我不明白这一点。您亲身体验了全局命名空间中的名称是如何造成麻烦的,但您仍然拒绝自己做正确的事情?!
标签: c++ namespaces