Ich habe eine Klasse namens AppSettings, wo ich ein Array mit einer Reihe von Notenfrequenzen habe. Ich bekomme mehrere Fehler mit dem unten stehenden Code und ich bin mir nicht sicher, was das Problem ist.
Die Fehlermeldungen sind:
static data member of type 'const float [36] must be initialized out of line
A brace enclosed initializer is not allowed here before '{' token
Invalid in-class initialization of static data member of non-integral type
Und der Code:
%Vor%Wie der Name schon sagt, ist dies nur eine Header-Datei mit einigen Einstellungen und Werten, die ich in der App brauche.
Sie können den Wert von static
-Klassenmembern in der Klasse nicht definieren. Sie müssen eine solche Zeile in der Klasse haben:
Und dann in einer Implementierungsdatei für die Klasse ( AppSettings.cpp
vielleicht):
Außerdem müssen Sie hier nicht die Zahl in []
angeben, da C ++ intelligent genug ist, um die Anzahl der Elemente in Ihrem Initialisierungswert zu zählen.
C ++ 03 unterstützt keine Klassendefinitionen für komplexe Daten wie Arrays von Konstanten.
Um eine solche Definition im Namespace-Bereich in einer Header-Datei zu platzieren und die Ein-Definition-Regel nicht zu brechen, können Sie wie folgt eine spezielle Ausnahme für Template-Klassen verwenden:
%Vor%Es gibt auch einige andere Techniken, die verwendet werden können:
Eine Inline-Funktion, die einen Verweis auf das Array erzeugt (oder als Indexer verwendet wird).
Platzieren Sie die Definition in einer separat kompilierten Datei.
Berechnen Sie einfach die Zahlen nach Bedarf.
Ohne weitere Informationen möchte ich nicht die Wahl für Sie treffen, aber es sollte keine schwierige Wahl sein.