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 wiestaticIch 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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage