如何解决具有相同名称的两个冲突的命名空间

x-A*_*A-x 4 c++ namespaces

我在自己的代码中有一个命名空间核心,它与我正在使用的动态库的命名空间核心冲突.问题出现是因为我无法修改其中任何一个.第一个核心因为是我们团队项目的一部分,第二个核心因为是图书馆的一部分.有办法解决这种情况吗?

Aes*_*ete 7

尝试将核心命名空间转换为子命名空间.

编辑:清理答案并添加代码.(很难在手机上做!)

这样您就可以访问每个"核心"命名空间.这也明确地显示了被引用的"核心".即使外部库具有相同的功能名称,您也会安全.

但是,您提到您实际上无法更改原始代码中的任何内容,因此您唯一的选择是使用不同的库并希望它没有"核心"命名空间.在我看来,说服你的团队更改代码可能会更容易.

// Your 'core' namespace, inside your own namespace.
namespace Mygame
{
  namespace core
  {
    void Foo();
  }
}

// Access both namespaces safely.
Mygame::core::Foo();
core::Foo();
Run Code Online (Sandbox Code Playgroud)