使用另一个命名空间的名称创建子命名空间
Creating a sub-namespace with the name of another namespace
我想做这样的事情:
namespace someModule
{
int someInt = 4;
}
namespace test::someModule
{
void f()
{
someModule::someInt = 2;
}
}
但编译器似乎在 test::someModule
而不是 someModule
中搜索 someInt
。我可以将 test
创建为 test::someModule_
,但它看起来很丑陋。没有更好的选择吗?
您始终可以使用 ::
作为前缀来引用全局命名空间,即
::someModule::someInt = 2;
请注意,您拥有多个同名命名空间这一事实可能会让人感到困惑!除非你有一个 非常 好的架构理由来解释为什么建议将这样的添加到我正在维护的项目中,否则我会拒绝这个代码——这样的代码很容易被误解。事实上,这几乎像是故意误导!作为程序员,您的工作是编写不仅可以被机器阅读和理解的代码,而且可以在一年内被您自己或明天的其他开发人员阅读和理解。在描述两个不同的事物(名称空间)时,使用两个不同的名称。只有在做同样的事情时才可以使用相同的名称。
我想做这样的事情:
namespace someModule
{
int someInt = 4;
}
namespace test::someModule
{
void f()
{
someModule::someInt = 2;
}
}
但编译器似乎在 test::someModule
而不是 someModule
中搜索 someInt
。我可以将 test
创建为 test::someModule_
,但它看起来很丑陋。没有更好的选择吗?
您始终可以使用 ::
作为前缀来引用全局命名空间,即
::someModule::someInt = 2;
请注意,您拥有多个同名命名空间这一事实可能会让人感到困惑!除非你有一个 非常 好的架构理由来解释为什么建议将这样的添加到我正在维护的项目中,否则我会拒绝这个代码——这样的代码很容易被误解。事实上,这几乎像是故意误导!作为程序员,您的工作是编写不仅可以被机器阅读和理解的代码,而且可以在一年内被您自己或明天的其他开发人员阅读和理解。在描述两个不同的事物(名称空间)时,使用两个不同的名称。只有在做同样的事情时才可以使用相同的名称。