代码之家  ›  专栏  ›  技术社区  ›  Bipolo

使用另一个命名空间的名称创建子命名空间

  •  0
  • Bipolo  · 技术社区  · 2 年前

    我想这样做:

    namespace someModule
    {
        int someInt = 4;
    }
    
    namespace test::someModule
    {
        void f()
        {
            someModule::someInt = 2;
        }
    }
    

    但编译器似乎在搜索 someInt 在里面 test::someModule 而且不在 someModule . 我可以创造 test test::someModule_ ,但它看起来很难看。难道没有更好的选择吗?

    1 回复  |  直到 2 年前
        1
  •  4
  •   Remy Lebeau    2 年前

    您始终可以使用 :: 作为前缀,即。,

    ::someModule::someInt = 2;
    

    请注意,您有多个同名的名称空间,这一事实可能非常令人困惑!除非你有 非常 很好的架构原因,您解释了为什么建议将这样的代码添加到我正在维护的项目中,我会拒绝这样的代码,因为这样的代码很容易被误解。事实上,这几乎是故意误导!作为程序员,您的工作是编写不仅可以被机器读取和理解的代码,而且可以在一年内被您自己或其他开发人员读取和理解。描述两个不同的事物(名称空间)时,请使用两个不同的名称。只有当某个事物做相同的事情时,使用相同的名称才是好的。