C++ 命名空间内的命名空间别名

C++ 命名空间内的命名空间别名,c++,namespaces,C++,Namespaces,我有以下名称空间结构 namespace a::b::c { class xyz{ }; using x=xyz } 如果我想在外部文件中引用x,我应该如何处理它?它是像a::b::c::x还是仅仅是x 为了能够在代码之外将其称为x,我如何更改上述代码?我可以在命名空间a::b::c中使用x=a::b::xyz进行写入吗 名称x是在名称空间a::b::c中引入的 因此,在全局名称空间中,要引用名称x,必须编写 a::b::c::x 您可以在全局命名空间中引入别名,如 u

我有以下名称空间结构

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

   };

   using x=xyz
}
如果我想在外部文件中引用x,我应该如何处理它?它是像a::b::c::x还是仅仅是x

为了能够在代码之外将其称为x,我如何更改上述代码?我可以在命名空间a::b::c中使用x=a::b::xyz进行写入吗

名称x是在名称空间a::b::c中引入的

因此,在全局名称空间中,要引用名称x,必须编写

a::b::c::x
您可以在全局命名空间中引入别名,如

using x = a::b::c::xyz;
或者,您可以使用如下的using声明

using a::b::c::x;
在这种情况下,您可以在放置using声明的作用域中使用非限定名称x。

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

因此,在全局名称空间中,要引用名称x,必须编写

a::b::c::x
您可以在全局命名空间中引入别名,如

using x = a::b::c::xyz;
或者,您可以使用如下的using声明

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

在这种情况下,您可以在using声明所在的范围内使用非限定名称x。

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

当您使用:名称空间a::b::c时,您将前缀a::b::c添加到其中的所有名称中,因此,您必须使用您提到的a::b::c::x来调用它,并且您可以轻松地自己检查它!。只有在该名称空间内,才能将其用作x

您可以在其他地方使用它,方法是将它包含到名称空间中,使用a::b::c::x,但我不明白您为什么要这样做

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


但是,创建名称空间的目的很好,请避免通过执行这些操作来删除名称空间前缀,这只是一个坏习惯。

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

当您使用:名称空间a::b::c时,您将前缀a::b::c添加到其中的所有名称中,因此,您必须使用您提到的a::b::c::x来调用它,并且您可以轻松地自己检查它!。只有在该名称空间内,才能将其用作x

您可以在其他地方使用它,方法是将它包含到名称空间中,使用a::b::c::x,但我不明白您为什么要这样做

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


但是,创建名称空间的目的很好,请避免通过执行这些操作来删除名称空间前缀,这只是一个坏习惯。

为什么不试试呢?为什么不试试呢?