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
lubstatic
wiele „niezdefiniowanych odniesień” do błędów generowanych przez inne części mojego kodu, a nawet linię powrotu funkcji getteraPowó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ć?