C++ C++;将名称空间使用到相同的嵌套名称空间中

C++ C++;将名称空间使用到相同的嵌套名称空间中,c++,header,namespaces,C++,Header,Namespaces,假设我有一个名称空间: namespace UI { } namespace Domain { } 我还有另一个名称空间: namespace UI { } namespace Domain { } 现在让我们假设在域名称空间中,我还有一个特定于该域的UI名称空间 namespace Domain { namespace UI { } } 是否可以将全局UI命名空间导入域UI命名空间,而不将其导入域命名空间?我知道使用名称空间通常不是一个好主意,但从概念上讲,域

假设我有一个名称空间:

namespace UI
{
}
namespace Domain
{
}
我还有另一个名称空间:

namespace UI
{
}
namespace Domain
{
}
现在让我们假设在域名称空间中,我还有一个特定于该域的UI名称空间

namespace Domain
{
    namespace UI
    {
    }
}

是否可以将全局UI命名空间导入域UI命名空间,而不将其导入域命名空间?我知道使用名称空间通常不是一个好主意,但从概念上讲,域UI名称空间应该同时位于全局UI名称空间和域名称空间中。

唯一可能的方法是使用名称空间别名或将整个名称空间UI使用到domain::UI中。在这两种情况下,都有一种从域名称空间访问它的方法

示例:

namespace UI {
    class Test {

    };
}

namespace Domain {

}

namespace Domain {
    namespace UI {
        namespace _UI = ::UI;

        struct Test2 {
            _UI::Test param;
        };
    }
}

namespace Domain2 {

    namespace UI {
        using namespace ::UI;

        struct Test2 {
            Test param;
        };
    }
}

是的,没错,在引用全局名称空间时使用::UI。哇,你可以有名称空间别名,但你根本不知道。还有一个问题,如果我使用第二个解决方案标题,它是否会为域UI命名空间的所有用途导入全局UI?否,仅适用于包含“using namespace::UI”的文件或包含带有using命名空间的标题的文件。C++中的命名空间不像GO中的示例包那样工作。如果您没有定义某个内容的标题,则没有该标题的可见性。