[英]Namespace alias inside a namespace
我有以下命名空间结构
namespace a::b::c
{
class xyz{
};
using x=xyz
}
如果我想在外部文件中引用 x,我应该如何解决它? 是像a::b::c::x
还是只是x
?
为了能够在我的代码之外将其称为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.