【问题标题】:How to give an abbreviation to a namespace? [duplicate]如何为命名空间提供缩写? [复制]
【发布时间】:2013-12-28 04:10:15
【问题描述】:

我有一个命名空间层次结构,想为一些长命名空间名称提供缩写。例如,我有

Math::Geometry::OneDimension::

我想将Ge 用于GeometryD1 用于OneDimension 因此以下工作

Math::Ge::OneDimension::
Math::Geoemtry::D1::
Math::Ge::D1::

是否可以使用命名空间别名来做到这一点?

【问题讨论】:

    标签: c++ namespaces


    【解决方案1】:

    您可以使用命名空间别名:

    namespace D1 = Math::Geometry::OneDimension;
    

    【讨论】:

    • 不应该使用XXX = ...吗?
    • @the_drow:不,using 只是将命名空间带入范围。它不会为命名空间创建别名。
    • 我确定我前段时间使用了 using XXX = YYY。
    • @the_drow:这是类型别名的 C++11 语法,但不能用于命名空间别名。
    • 很久没有接触C++了。
    【解决方案2】:

    要这样访问它,您需要在其封闭的命名空间内声明命名空间别名:

    namespace Math {
       namespace Ge = Geometry;
       namespace Geometry {
           namespace D1 = OneDimension;
       }
    }
    

    当然,您可以在其他范围内声明别名,并在该范围内以GeD1 的形式访问它们。

    【讨论】:

      【解决方案3】:
      namespace Ge = Math::Geonetry::OneDimension;
      

      【讨论】:

        【解决方案4】:

        您可以在命名空间内执行别名,或者,您可以从命名空间外部执行此操作:

        namespace Ge = Math::Geometry;
        namespace D1 = Ge::OneDimension;
        
        Ge::element_of_geometry;
        D1::element_of_one_dimension;
        

        我更喜欢这个解决方案,但在范围内使用它以避免名称冲突。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-24
          • 2012-08-20
          • 1970-01-01
          • 2010-09-06
          • 1970-01-01
          • 1970-01-01
          • 2014-02-04
          • 2016-02-28
          相关资源
          最近更新 更多