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