有没有办法在具有相同名称的新命名空间中嵌入类

Is there a way to embed a class in a new namespace with the same name?

本文关键字:命名空间 有没有      更新时间:2023-10-16

我们试图在新命名空间后面隐藏一个类,但我们希望保留原始名称。

namespace first {
    class Logger { ... };
}
namespace second {
    using Logger = first::Logger;
}

错误:类型"记录器"的定义与 同名 类记录器;

是的,我们可以:

namespace first {
  class Logger {  };
}
namespace second {
  typedef first::Logger Logger;
}

typedef 显然等同于使用(在 C++11 中),只是更笨拙。

Right-o,这是由于我们自己的代码库中类型类 Logger 的前向声明。

namespace first {
    class Logger { ... };
}
namespace second {
    using Logger = first::Logger;
    ... some time later ...
    class Logger;
}