我试图将一个旧库(尽可能不使用名称空间)移植到现代编译器中。我的一个目标无法区分System :: TObject和:: TObject(没有命名空间)。 System :: TObject是编译器原生的。如何在移植旧代码时处理类名冲突?
我试过使用指令,即使用:: TObject;
但是,这并没有做到这一点。
显而易见的解决方案是将所有原始库封装在一个名称空间中,然后通过名称来调用它 - 这应该避免含糊不清。但是,这是最明智的解决方案吗?还有其他解决方案吗?添加一个命名空间需要更改一堆文件,我不知道它是否会在稍后产生不必要的影响。
这将导致编译器创建以oldlib为前缀的符号,该符号不会出现在旧库中,从而导致“未解析的外部符号”public:__thiscall oldlib :: A ::〜A(void)“(? ?1A @ oldlib @@ QAE @ XZ)` – xtofl 2008-10-10 09:33:39