Gibt es in C++ einen Grund, nicht über eine Klasseninstanz auf statische Membervariablen zuzugreifen? Ich weiß, dass Java die Stirn runzelt und sich fragt, ob es in C++ eine Rolle spielt. Beispiel:C++: Zugang const Mitglied vars durch die Klasse oder eine Instanz?
class Foo {
static const int ZERO = 0;
static const int ONE = 1;
...
};
void bar(const Foo& inst) {
// is this ok?
int val1 = inst.ZERO;
// or should I prefer:
int val2 = Foo::ZERO
...
};
Ich habe eine zweite Bonusfrage. Wenn ich ein statisches Double deklariere, muss ich es irgendwo definieren und diese Definition muss den Typ wiederholen. Warum muss der Typ wiederholt werden? Zum Beispiel:
In a header:
class Foo {
static const double d;
};
In a source file:
const double Foo::d = 42;
Warum muss ich das "const double" Teil in meinem CPP-Datei wiederholen?
Nicht ein genaues Duplikat, aber ich denke, dass die gleichen Antworten wahrscheinlich gelten: http://StackOverflow.com/Questions/840522/Given-Apointer-to-Ac-Object-what-is-the-prefered-way -to-call-a-static-membe –
Ja. Lesen Sie die Antwort von Adam Rosenthal aus einem sehr guten Grund, warum Sie die Klasse als Präfix anstelle einer Instanz bevorzugen sollten. – quark