c ++引用兄弟命名空间

时间:2011-05-20 09:25:23

标签: c++ namespaces

下式给出:

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
}}}

我是否需要指定命名空间的完整路径?有什么方法吗?

3 个答案:

答案 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 ++命名空间解析的属性,它能够向上移动嵌套层次结构以搜索命名空间。