// MyClass.h
namespace MyNamespace {
static const double GasConstant = 1.987;
class MyClass
{
// constructors, methods, etc.
};
}
Yo antes tenía GasConstant declarado dentro de la declaración MiClase (y tenía una definición por separado en el archivo de origen ya que C++ no soporta const
inicialización de tipos no integrales). Sin embargo, necesito acceder desde otros archivos y lógicamente parece que debería residir en el nivel del espacio de nombres.¿Qué efecto tiene static const tiene en un miembro de espacio de nombres
Mi pregunta es, ¿qué efecto tiene static const
en este caso? Claramente, const
significa que no puedo asignar un nuevo valor a GasConstant, pero qué significa un miembro estático en el espacio de nombre. ¿Esto es similar al estático en el alcance del archivo, donde no se puede acceder al miembro fuera de la unidad?
¿Está esto en un archivo de encabezado (.h) o en un archivo de implementación (.cpp) ??? – AnT
Está en un archivo de encabezado (.h). –
En C++ no hay alcance de archivo. Solo hay ámbitos de espacios de nombres en C++ si está fuera de funciones y clases. Además, si lee en algunas páginas lo que ellos llaman "global", generalmente significan el espacio de nombres global y otros espacios de nombres incluidos. 'cplusplus.com' es conocido por su uso impreciso de la palabra" global ", por ejemplo. Entonces, si algo explica los efectos de "estática" en "alcance global", generalmente se refieren a su efecto en el alcance del espacio de nombres. –