статические и нестатические переменные в пространстве имен

У меня есть пространство именfoo который содержит целое числоbarобъявил так ...

foo.h:

namespace foo {
    int bar;
}

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

Почему это работает? И что более важно, почемуdoesn't это работаетwithout static? Что значитstatic значит, когда используется вnamespace?

Ответы на вопрос(4)

Ваш ответ на вопрос