zmienne statyczne a niestatyczne w przestrzeni nazw

Mam przestrzeń nazwfoo który zawiera liczbę całkowitąbar, zadeklarowany tak ...

foo.h:

namespace foo {
    int bar;
}

Teraz, jeśli uwzględnięfoo.h tylko w jednym pliku działa dobrze. Ale problem pojawia się, gdy włączęfoo.h z dwóch lub więcej plików: pojawia się błąd linkera. Zrozumiałem to, jeśli oświadczębar tak jakstatic, Mogę to uwzględnićfoo.h w więcej niż jednym pliku. Wydaje mi się to dziwne, ponieważ nie zdawałem sobie sprawy, że można zadeklarować zmienną statyczną wewnątrz przestrzeni nazw. (co to w ogóle znaczy?)

Dlaczego to działa? I co ważniejsze, dlaczegonie działabez static? Co robistatic oznacza, gdy jest używany wnamespace?

questionAnswers(4)

yourAnswerToTheQuestion