C ++解决与旧式未命名命名空间的冲突

时间:2018-09-20 23:44:32

标签: c++ clang

我有很多遗留代码,它们声明了许多重要的类型。例如:

typedef uint32 EventId;

我目前正在集成具有 名称空间但定义有冲突的第三方代码(Scaleform)的出色版本:

namespace Scaleform { namespace GFx {
class EventId ...
}}

有些代码同时遇到了两个定义,我当然会出错:

  

错误:对“ EventId”的引用不明确

     

注意:通过名称查找找到的候选对象是'EventId'

     

注意:通过名称查找找到的候选对象是'Scaleform :: GFx :: EventId'

(OSX Clang,BTW)

据我所知,我是SOL,因为C ++禁止发生此类冲突,而且我无法(例如)用以下内容包装旧式引用:

using namespace;

强制使用未命名的命名空间。

我唯一的办法是重命名其中一种类型,这样就不会发生冲突,对吗?

0 个答案:

没有答案