下式给出:
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
}}}
我是否需要指定命名空间的完整路径?有什么方法吗?
答案 0 :(得分:6)
接下来应该有效:
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
答案 1 :(得分:2)
您可以在childb
namespace childa = root::parent::childa;
然后
childa::hard_to_get_at sibling;
答案 2 :(得分:2)
我没有尝试过,但据我记得
childa::hard_to_get_at sibling;
应该在childb
内工作,而无需定义命名空间别名。这是C ++命名空间解析的属性,它能够向上移动嵌套层次结构以搜索命名空间。