Jak można zdefiniować const static std :: string w pliku nagłówkowym?

Mam klasę, którą chciałbym przechowywać statyczniestd::string która jest albo prawdziwie stała, albo stała const za pośrednictwem gettera.

Próbowałem kilku bezpośrednich podejść
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

Próbowałem też

3.

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

Te podejścia zawodzą z następujących powodów:

błąd: inicjalizacja w klasie statycznego elementu danychconst string MyClass::foo typu niedosłownegoklasa pamięci określona dlafoo - nie lubi łączeniaextern zconst lubstaticwiele „niezdefiniowanych odniesień” do błędów generowanych przez inne części mojego kodu, a nawet linię powrotu funkcji gettera

Powód Chciałbym mieć deklarację w nagłówku, a nie w pliku źródłowym. Jest to klasa, która zostanie rozszerzona, a wszystkie jej pozostałe funkcje są czysto wirtualne, więc obecnie nie mam innego powodu niż te zmienne, aby mieć plik źródłowy.

Jak to zrobić?

questionAnswers(2)

yourAnswerToTheQuestion