C++ 中命名空间别名的范围是啥?
Posted
技术标签:
【中文标题】C++ 中命名空间别名的范围是啥?【英文标题】: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++ 中的其他声明具有相同的范围规则。 【参考方案1】:在引入它的范围内有效。
看看http://en.cppreference.com/w/cpp/language/namespace_alias,我相信cppreference的解释,它更标准。
【讨论】:
请不要只提供链接。还要从您所引用的页面中添加至少部分摘录。【参考方案2】:看看http://en.wikibooks.org/wiki/C++_Programming/Scope/Namespaces
【讨论】:
【参考方案3】:这是一个区块的有效期。例如,如果您定义如下命名空间别名,则命名空间别名 abc 在 ... 块之外将无效。
namespace abc = xyz;
abc::test t; //valid
abc::test t; //invalid
【讨论】:
【参考方案4】:范围是定义别名的声明区域。
【讨论】:
【参考方案5】:据我所知,它在它声明的范围内。因此,如果您在一个方法中使用别名,那么它在该方法中有效,但在另一个方法中无效。
【讨论】:
【参考方案6】:我相当确定命名空间别名仅在创建它的块内具有范围,就像大多数其他类型的标识符一样。我目前无法确定,但this page 似乎并不反对。
【讨论】:
【参考方案7】:它将具有定义它的块的范围 - 可能与函数范围相同,除非您在函数内的块内声明别名。
【讨论】:
以上是关于C++ 中命名空间别名的范围是啥?的主要内容,如果未能解决你的问题,请参考以下文章