У меня странная проблема со статической переменной, которая явно не инициализирована так, как должно быть.
У меня огромный проект, который работает с Windows и Linux. Поскольку у разработчика Linux нет этой проблемы, я бы предположил, что это какой-то проводной Visual Studio.
Заголовочный файл
class MyClass
{
// some other stuff here
...
private:
static AnotherClass* const Default_;
};
Файл CPP
AnotherClass* const MyClass::Default_(new AnotherClass(""));
MyClass(AnotherClass* const var)
{
assert(Default_);
...
}
Проблема в том, что Default_
всегда NULL
. Я также пробовал точку останова при инициализации этой переменной, но не могу ее перехватить.
Существует похожая проблема в другом классе.
Файл CPP
std::string const MyClass::MyString_ ("someText");
MyClass::MyClass()
{
assert(MyString_ != "");
...
}
В этом случае MyString_
всегда пуст. Так что опять не инициализировано.
У кого-нибудь есть идеи по этому поводу? Это проблема настроек Visual Studio?
Приветствия Симона
Edit:
Я также наткнулся на фиаско статической инициализации. Но я не уверен, что это может быть проблемой, потому что нет проблем с компилятором Linux. Разве компилятор не должен реагировать так же в этом случае?