statische vs nicht statische Variablen im Namespace
Ich habe einen Namespacefoo
welches eine ganze Zahl enthältbar
, erklärte so ...
foo.h:
namespace foo {
int bar;
}
Nun, wenn ich einschließefoo.h
In nur einer Datei funktioniert dies einwandfrei. Aber ein Problem entsteht, wenn ich einschließefoo.h
aus zwei oder mehr Dateien: Ich erhalte einen Linkfehler. Ich habe das herausgefunden, wenn ich es erklärebar
wiestatic
Ich kann einschließenfoo.h
in mehr als einer Datei. Das kommt mir merkwürdig vor, weil ich nicht wusste, dass man eine statische Variable innerhalb eines Namespaces deklarieren kann. (was bedeutet das überhaupt?)
Warum funktioniert das? Und was noch wichtiger ist, warumnicht es funktioniertohne static
? Was machtstatic
meine, wenn in einem verwendetnamespace
?