Как вы можете определить const static std :: string в заголовочном файле?

У меня есть класс, который я хотел бы хранить статическийstd::string это либо действительно константный, либо эффективный констант через геттер.

Я попробовал пару прямых подходов
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

Я также пытался

3.

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

Эти подходы терпят неудачу по следующим причинам:

ошибка: инициализация в классе статического члена данныхconst string MyClass::foo не буквального типакласс хранения, указанный дляfoo - это не похоже на объединениеextern с участиемconst или жеstaticмного «неопределенных ссылок на» ошибки, генерируемые другими частями моего кода и даже строкой возврата функции getter

Причина Я хотел бы иметь объявление в заголовке, а не исходный файл. Это класс, который будет расширен, и все его другие функции являются чисто виртуальными, поэтому в настоящее время у меня нет другой причины, кроме этих переменных, иметь исходный файл.

Так как это можно сделать?

Ответы на вопрос(2)

Ваш ответ на вопрос