在我的项目中,我必须使用一个符号不在命名空间中的库。图书馆的类具有相当简短和通用的名称,例如Logger
和Reader
。我也在我项目的自己的课程中使用了一些这些名字。
考虑我的项目符号也没有命名空间的情况。可以通过将我的代码放在命名空间中并使用限定名称(例如::Logger
和My::Logger
)进行区分来解决名称冲突,但我更喜欢将库的符号命名为。我有什么方法可以强迫"强迫"将库的符号放入我选择的命名空间中?
其次,如果我想使用两个定义非命名空间Logger
的不同库,该怎么办?在这种情况下,有没有办法避免命名空间冲突?
答案 0 :(得分:5)
我有什么方法可以强迫"强迫"将库的符号放入我选择的命名空间中?
不,你不能真的这样做。我可以想象的一种方法是提供一个实际使用namespace
并从LoggerExt
等不同名称转发的包装API。
如果我想使用两个定义非命名空间
Logger
的不同库怎么办?
你迷路了,至少链接器会告诉你。
答案 1 :(得分:0)
我可以告诉您4个选项: