命名空间内的命名空间别名
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
吗?
在命名空间a::b::c
中引入名称x
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 声明的范围内使用非限定名称 x
。
好的,您需要了解 namespace
表示新名称 space 以便区分可能相似的名称。
当您使用:namespace a::b::c
时,您会在其中的所有名称中添加前缀 a::b::c
,因此,您必须像您提到的那样使用 a::b::c::x
来调用它(并且您可以自己轻松检查!)。只有那个名字space的里面,才可以作为x
.
使用
你可以把它包含在名字space中,放在using a::b::c::x
中,在其他地方使用,但我不明白你为什么要这样做。
如果想到处使用,就把using x = a::b::c::x
放在名字外面space .
但是,namespace的创建是出于好的目的,请避免通过执行任何这些操作来删除 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
吗?
在命名空间a::b::c
中引入名称x
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 声明的范围内使用非限定名称 x
。
好的,您需要了解 namespace
表示新名称 space 以便区分可能相似的名称。
当您使用:namespace a::b::c
时,您会在其中的所有名称中添加前缀 a::b::c
,因此,您必须像您提到的那样使用 a::b::c::x
来调用它(并且您可以自己轻松检查!)。只有那个名字space的里面,才可以作为x
.
你可以把它包含在名字space中,放在using a::b::c::x
中,在其他地方使用,但我不明白你为什么要这样做。
如果想到处使用,就把using x = a::b::c::x
放在名字外面space .
但是,namespace的创建是出于好的目的,请避免通过执行任何这些操作来删除 namespace 前缀,这只是一个坏习惯。