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