Как вы можете определить 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Причина Я хотел бы иметь объявление в заголовке, а не исходный файл. Это класс, который будет расширен, и все его другие функции являются чисто виртуальными, поэтому в настоящее время у меня нет другой причины, кроме этих переменных, иметь исходный файл.
Так как это можно сделать?