MY_GLOBAL_CONST
не назначается, когда я пытаюсь использовать его в ProblemClass::ProblemClass()
.Зачем?Как это исправить?Я работаю над старым проектом VFC MFC.
SomeClass.h
#include "ProblemClass.h"
class SomeClass
{
private:
ProblemClass m_problemClass; //created on the heap
public:
SomeClass();
~SomeClass();
}
ProblemClass.h
class ProblemClass
{
public:
ProblemClass();
~ProblemClass();
}
ProblemClass.cpp
#include "ProblemClass.h"
const CString MY_GLOBAL_CONST = _T("User");//Also tried to put that line in ProblemClass.h without luck
ProblemClass::ProblemClass()
{
CString foo = MY_GLOBAL_CONST; //MFC-Runtime assertion fails, MY_GLOBAL_CONST is not assigned yet
}
ProblemClass::~ProblemClass(){}
Обновление:
После некоторых дальнейших исследований я могу подтвердить, что SomeClass
также создается вглобальный контекст.Итак, Пол Сандерс абсолютно прав, говоря, «здесь происходят два глобальных инициализатора, выполняющиеся в неправильном порядке» .