【问题标题】:using "multiple"namespaces one-liner使用“多个”命名空间单行
【发布时间】:2020-08-29 17:54:41
【问题描述】:

有没有一种简化的方法来包含更多的命名空间,而不是每次都输入相同的东西。这很烦人,尤其是在 .h 文件中。

例如:

而不是写:

int f() {
    using namespace blabla1;
    using namespace blabla2;
    using namespace blabla3;

}

我更喜欢:

使用 myNamespace = blabla1, blabla2, blabla3;

int f() {
    using namespace myNamespace;
    /// this will be equivalent to the previous example
    }

谢谢

【问题讨论】:

    标签: c++ c++11 namespaces inline-namespaces


    【解决方案1】:

    使用指令是可传递的。因此,如果您将它们聚合到单个命名空间中

    namespace All {
        using namespace A;
        using namespace B;
        using namespace C;
    }
    

    然后你可以简单地做

    using namespace All;
    

    并且不合格的名称查找将起作用。

    Live example

    【讨论】:

      【解决方案2】:

      我不确定这是否对您有帮助,但如果您想避免每次使用多个 using 语句,您可以将上述命名空间包装到另一个命名空间中:

      namespace myNameSpace {
        using namespace blabla1;
        using namespace blabla2;
        using namespace blabla3;
      }
      

      然后像这样使用它:

      int f() {
          using namespace myNameSpace;
      }
      

      这是demo

      【讨论】:

      • 同一时间同时解决,该死,我不知道人们如何处理这些情况。你们两个都应该得到最好的答案
      • 谢谢 :) 请注意,您只能接受一个答案,但如果您觉得多个答案有用,您可以点赞。
      • 我有一个新帐户,所以我需要一些积分来投票。我一定会赞成两个
      • 好的,两者都赞成。我将向 StoryTeller 提供最佳答案,只是因为他解释了 using 指令是可传递的。再次感谢你的队友
      最近更新 更多