繁体   English   中英

命名空间内的命名空间别名

[英]Namespace alias inside a namespace

我有以下命名空间结构

namespace a::b::c
{
   class xyz{

   };

   using x=xyz
}
  1. 如果我想在外部文件中引用 x,我应该如何解决它? 是像a::b::c::x还是只是x

  2. 为了能够在我的代码之外将其称为x ,我该如何更改上述代码? 我可以在命名空间 a::b::c 内using x=a::b::xyz编写吗?

名称x被引入命名空间a::b::c

namespace a::b::c
{
   class xyz{

   };

   using x=xyz
}

所以在全局命名空间中要引用名字x你必须写

a::b::c::x

您可以在全局命名空间中引入别名,例如

using x = a::b::c::xyz;

或者,您可以使用 using 声明,例如

using a::b::c::x;

在这种情况下,您可以在放置 using 声明的 scope 中使用非限定名称x

好的,您需要了解namespace意味着一个新的命名空间,以便区分可能相似的名称。

When you use: namespace a::b::c you add to all of the names inside it the prefix a::b::c , therefore, you must call it using a::b::c::x as you提到(您可以轻松地自行检查。)。 只有该命名空间内,您才能将其用作x

您可以通过将其包含在命名空间中来在其他地方使用它using a::b::c::x ,但我不明白您为什么要这样做。

如果你想在任何地方使用它,只需将using x = a::b::c::x放在命名空间之外

但是,命名空间的创建是有目的的,请避免删除命名空间前缀,这只是一个坏习惯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM