c++ - tag - pautips tiene tiroides
c++ refiriƩndose al espacio de nombre de un hermano (3)
dado:
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
}}}
¿Debo especificar la ruta completa del espacio de nombres? ¿Hay alguna forma de evitarlo?
El siguiente debería funcionar:
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
No lo he probado, pero por lo que recuerdo
childa::hard_to_get_at sibling;
debería funcionar desde dentro de childb
sin la necesidad de definir un alias de espacio de nombre. esta es una propiedad de la resolución del espacio de nombres de C ++, que puede moverse hacia arriba en la jerarquía de anidamiento para buscar espacios de nombres.
Puede usar un alias de espacio de nombres en childb
namespace childa = root::parent::childa;
y entonces
childa::hard_to_get_at sibling;