статические и нестатические переменные в пространстве имен
У меня есть пространство именfoo
который содержит целое числоbar
объявил так ...
foo.h:
namespace foo {
int bar;
}
Теперь, если я включуfoo.h
только в одном файле, это работает просто отлично. Но проблема возникает, когда я включаюfoo.h
из двух или более файлов: я получаю ошибку компоновщика. Я понял, что если я объявлюbar
какstatic
Я могу включитьfoo.h
в более чем одном файле. Мне это кажется странным, потому что я не знал, что можно объявить статическую переменную внутри пространства имен. (что это вообще значит?)
Почему это работает? И что более важно, почемуdoesn't это работаетwithout static
? Что значитstatic
значит, когда используется вnamespace
?