Как вы можете определить 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)

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