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

时间:2016-03-09 00:34:11

标签: c++ c++11 namespaces typedef facade

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

namespace first {
    class Logger { ... };
}

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

错误:类型定义' Logger'与类型别名冲突   一样的名字       class Logger;

2 个答案:

答案 0 :(得分:1)

是的,我们可以:

namespace first {
  class Logger {  };
}

namespace second {
  typedef first::Logger Logger;
}

typedef is apparently equivalent to using(在C ++ 11中),更加狡猾。

答案 1 :(得分:1)

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

namespace first {
    class Logger { ... };
}

namespace second {
    using Logger = first::Logger;

    ... some time later ...
    class Logger;
}