que tengo un espacio de nombres foo
que contiene un entero bar
, declarado así que ...estática vs variables no estáticas en espacio de nombres
foo.h:
namespace foo {
int bar;
}
Ahora si incluyo foo.h
en una sola archivo, esto funciona bien. Pero surge un problema cuando incluyo foo.h
desde dos o más archivos: obtengo un error de enlazador. Descubrí que si declaro bar
como static
, puedo incluir foo.h
en más de un archivo. Esto me parece extraño, porque no sabía que se podía declarar una variable estática dentro de un espacio de nombres. (¿Qué significa eso incluso?)
¿Por qué funciona esto? Y más importante, ¿por qué no funciona sinstatic
? ¿Qué significa static
cuando se usa en un namespace
?
Votación. Fue exactamente mi problema y lo resolvió :) –