tiroides tips tiene tag supermercado sobre que pautips pau favorito estudio estatura cuantos cual cosas color aƱos c++ namespaces

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;