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
?