C++ 引用同级命名空间

c++ referring to a sibling namespace

本文关键字:命名空间 引用 C++      更新时间:2023-10-16

给定:

namespace root { namespace parent { namespace childa
    class hard_to_get_at{};
}}}
namespace root { namespace parent { namespace childb
    // how do I refer refer to namespace childb relative to the current namespace ?
    ..::hard_to_get_at instance_of_childa_class; // psuedo syntax
}}}

是否需要指定命名空间的完整路径?有没有办法解决它?

接下来应该工作:

namespace root{
namespace parent{
namespace childb{
// some function where you want to use class hard_to_get_at
void foo()
{
   childa::hard_to_get_at obj;
   // do stuff
}
} // namespace childb
} // namespace parent
} // namespace root

我没有尝试过,但据我所知

childa::hard_to_get_at   sibling;

应该从childb内部工作,而无需定义命名空间别名。 这是C++命名空间解析的属性,它能够向上移动嵌套层次结构以搜索命名空间。

您可以在childb中使用命名空间别名

namespace childa = root::parent::childa;

然后

childa::hard_to_get_at   sibling;