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