Wie können Sie const static std :: string in der Header-Datei definieren?

Ich habe eine Klasse, die ich statisch speichern möchtestd::string Das ist entweder wirklich const oder effektiv const über einen Getter.

Ich habe ein paar direkte Ansätze ausprobiert
1.

const static std::string foo = "bar";

2.

const extern std::string foo; //defined at the bottom of the header like so 
...//remaining code in header
};  //close header class declaration
std::string MyClass::foo = "bar"
/#endif // MYCLASS_H

Ich habe es auch versucht

3.

protected:
    static std::string foo;
public:
    static std::string getFoo() { return foo; }

Diese Ansätze scheitern aus den folgenden Gründen:

Fehler: Klasseninitialisierung des statischen Datenelementsconst string MyClass::foo nicht wörtlichen TypsSpeicherklasse angegeben fürfoo - Es scheint nicht zu kombinierenextern mitconst oderstaticViele 'undefinierte Verweise auf' Fehler, die durch andere Teile meines Codes und sogar die Rückleitung der Getter-Funktion erzeugt wurden

Der Grund Ich möchte die Deklaration lieber im Header als in der Quelldatei haben. Dies ist eine Klasse, die erweitert wird, und alle anderen Funktionen sind rein virtuell. Daher habe ich derzeit keinen anderen Grund als diese Variablen, eine Quelldatei zu haben.

Wie kann das gemacht werden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage