我有很多遗留代码,它们声明了许多重要的类型。例如:
typedef uint32 EventId;
我目前正在集成具有 名称空间但定义有冲突的第三方代码(Scaleform)的出色版本:
namespace Scaleform { namespace GFx {
class EventId ...
}}
有些代码同时遇到了两个定义,我当然会出错:
错误:对“ EventId”的引用不明确
注意:通过名称查找找到的候选对象是'EventId'
注意:通过名称查找找到的候选对象是'Scaleform :: GFx :: EventId'
(OSX Clang,BTW)
据我所知,我是SOL,因为C ++禁止发生此类冲突,而且我无法(例如)用以下内容包装旧式引用:
using namespace;
强制使用未命名的命名空间。
我唯一的办法是重命名其中一种类型,这样就不会发生冲突,对吗?