¿Cómo acortar la sangría del espacio de nombres en los archivos de encabezado de C ++ sin usar 'usar'?
Frecuentes
Visto 1,235 veces
0
Si usa espacios de nombres para la separación de módulos/estructuración, el anidamiento y la sangría dentro del archivo de encabezado aumentan drásticamente. ¿Hay alguna forma de escribir el siguiente código de forma más corta?
namespace A
{
namespace B
{
namespace C
{
namespace D
{
namespace E
{
template <typename T>
public class X
{
public: ...
por ejemplo, como
namespace A::B::C::D::E
{
template<typename T> ...
}
en el archivo de encabezado en c++?
2 Respuestas
5
No, esa sintaxis de espacios de nombres anidados se sugirió anteriormente en diferentes momentos y lugares, pero no es válida.
Sin embargo, no es necesario sangrar
namespace A { namespace B { namespace C {
// ...
} } } // namespace A::B::C
contestado el 22 de mayo de 12 a las 14:05
2
Puede usar alias de espacio de nombres. Esto no funciona para ampliar los espacios de nombres existentes, sino para facilitar el acceso.
Puede usar macros para ampliar los espacios de nombres existentes, pero Si necesita hacer esto, probablemente tenga una jerarquía de espacio de nombres más profunda de lo que necesita o desea.
contestado el 22 de mayo de 12 a las 13:05
La pregunta estaba en el contexto de declarar cosas en espacios de nombres en encabezados y no puede usar alias para eso, ya que no puede declarar cosas en un alias de espacio de nombres. ¿Y las macros? Eurgh. - jonathan wakely
Personalmente, no me gustan las definiciones de marcos/preprocesador y trato de evitarlas si es posible: Caminante de la playa
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c++ coding-style namespaces or haz tu propia pregunta.
Trate de evitar un anidamiento tan profundo. - SChepurin
¿Hay realmente una gran diferencia entre
namespace A::B::C {
ynamespace A { namespace B { namespace C {
? No tienes que sangrar todo como lo haces. - FiktikLa Guía de estilo de Google C ++ recomienda no sangrar los espacios de nombres. - Robert Cooper
@Fiktik La diferencia es la legibilidad (que de hecho es una debilidad de c ++) - Beachwalker