【问题标题】:What is the scope of a namespace alias in C++?C++ 中命名空间别名的范围是什么?
【发布时间】:2010-12-02 12:16:58
【问题描述】:

在函数定义中定义的 C++ 命名空间别名是否具有块、函数、文件或其他范围(有效期)?

【问题讨论】:

  • 你的意思是“使用[命名空间];” ?
  • 看起来他的意思是将更长的命名空间名称别名为更易于使用的标识符:msdn.microsoft.com/en-us/library/chwe1tc8.aspx
  • 命名空间别名(和 using 声明)与 C++ 中的其他声明具有相同的范围规则。

标签: c++ scope namespaces


【解决方案1】:

在引入它的范围内有效。

看看http://en.cppreference.com/w/cpp/language/namespace_alias,我相信cppreference的解释,它更标准。

【讨论】:

  • 请不要只提供链接。还要从您所引用的页面中添加至少部分摘录。
【解决方案2】:
【解决方案3】:

这是一个区块的有效期。例如,如果您定义如下命名空间别名,则命名空间别名 abc 在 {...} 块之外将无效。

{ namespace abc = xyz; abc::test t; //valid } abc::test t; //invalid

【讨论】:

    【解决方案4】:

    范围是定义别名的声明区域。

    【讨论】:

      【解决方案5】:

      据我所知,它在它声明的范围内。因此,如果您在一个方法中使用别名,那么它在该方法中有效,但在另一个方法中无效。

      【讨论】:

        【解决方案6】:

        我相当确定命名空间别名仅在创建它的块内具有范围,就像大多数其他类型的标识符一样。我目前无法确定,但this page 似乎并不反对。

        【讨论】:

          【解决方案7】:

          它将具有定义它的块的范围 - 可能与函数范围相同,除非您在函数内的块内声明别名。

          【讨论】:

            猜你喜欢
            • 2010-11-15
            • 2021-10-24
            • 1970-01-01
            • 2011-02-05
            • 2011-08-28
            • 1970-01-01
            • 1970-01-01
            • 2022-07-06
            相关资源
            最近更新 更多