Статическая константная строка не будет инициализирована
У меня есть несколько статических константных строк в качестве закрытых членов моего класса C ++. Мне известно об объявлении в .h и определении (и инициализации) в практике .cpp. В конструкторе класса я вызываю функцию, которая использует эти статические строки. Удивительно, но в конструкторе строки остаются неинициализированными (пустые строки), что создает проблему.
Может кто-нибудь указать, что здесь может пойти не так? Я работаю с таким использованием статических константных строк все время, но никогда не сталкивался с такими ситуациями.
Обновление: m_data остается пустым в утилите (). У меня есть объект класса Test в качестве частного члена другого класса.
Вот код, который я использую:
// Test.h
class Test
{
public:
Test();
private:
void utility();
static const std::string m_data;
};
// Test.cpp
const std::string Test::m_data = "Data";
Test::Test()
{
utility();
}
void Test::utility()
{
//use m_data here
}