Definieren eines statischen Datenelements vom Typ const std::string
In C kann das Definieren einer privaten statischen Konstante für eine Klasse eine Herausforderung sein bei Verwendung des Standardtyps const std::string. Die aufgetretenen Fehlermeldungen weisen darauf hin, dass die verwendete Methode nicht mit dem ISO-C-Standard kompatibel ist.
Um eine private Literalkonstante ohne Verwendung einer #define-Direktive zu definieren, ziehen Sie die folgenden zwei Ansätze in Betracht:
Inline-Variablen (C 17 und höher)
Seit C 17 können Inline-Variablen verwendet werden, um statische Datenelemente mit Konstanten zu deklarieren Initialisierer. Dies geschieht durch Hinzufügen des Inline-Schlüsselworts vor der statischen Deklaration innerhalb der Klassendefinition:
class A { private: inline static const std::string RECTANGLE = "rectangle"; };
Definition Outside Class Definition (Prevor to C 17)
Prior to C 17, statische Mitglieder müssen außerhalb der Klassendefinition definiert und separat initialisiert werden. Die statische Deklaration innerhalb der Klassendefinition erfolgt ohne Initialisierer:
class A { private: static const std::string RECTANGLE; }; // In an implementation file const std::string A::RECTANGLE = "rectangle";
Beachten Sie, dass die Syntax der direkten Initialisierung statischer Mitglieder mit nicht-integralen Typen innerhalb von Klassendefinitionen nur mit Integral- und Enum-Typen zulässig ist.
Das obige ist der detaillierte Inhalt vonWie definiere ich eine private statische Konstante „std::string' in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!