variáveis estáticas vs não estáticas no namespace
Eu tenho um namespacefoo
que contém um inteirobar
, declarado assim ...
foo.h:
namespace foo {
int bar;
}
Agora, se eu incluirfoo.h
em apenas um arquivo, isso funciona bem. Mas surge um problema quando incluofoo.h
de dois ou mais arquivos: recebo um erro de vinculador. Eu descobri que se eu declararbar
Comostatic
Posso incluirfoo.h
em mais de um arquivo. Isso parece estranho para mim, porque eu não estava ciente de que alguém poderia declarar uma variável estática dentro de um namespace. (Afinal, o que isso quer dizer?)
Por que isso funciona? E mais importante, porquenão faz funcionasem static
? O questatic
significa quando usado em umnamespace
?