【问题标题】:C++ using namespaces into same namespace nestedC ++使用命名空间到嵌套的相同命名空间中
【发布时间】:2019-08-03 08:05:08
【问题描述】:

假设我有一个命名空间:

namespace UI
{
}

我还有另一个命名空间:

namespace Domain
{
}

现在假设在域命名空间中,我还有一个特定于该域的 UI 命名空间。

namespace Domain
{
    namespace UI
    {
    }
}

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

【问题讨论】:

    标签: c++ header namespaces


    【解决方案1】:

    唯一可能的方法是命名空间别名或使用整个命名空间 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 中的包那样工作。如果您没有定义某些内容的标题,则没有可见性。
    猜你喜欢
    • 2011-01-02
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多