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