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

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

foo.h:

namespace foo {
    int bar;
}

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

Почему это работает? И что более важно, почему не работает безstatic? Что означает staticпри использовании в namespace?

37
задан Michael Dorst 24 July 2012 в 02:53
поделиться