В моем классе есть этот участник.
std::vector<AvaWrapper> m_controls;
В моем конструкторе я звоню
m_controls.clear()
Затем я вызываю функцию-член, которая снова выполняет m_controls.clear (), но она взрывается утверждением. Отладчик показывает, что в m_controls содержится полмиллиона или более записей, хотя ни одна из них не является действительной, поскольку при раскрытии дерева отладчик показывает «Ошибка: выражение не может быть оценено». Итак, моя интуиция заключается в том, что класс не создан правильно, потому что этот код работал, но позже я извлек класс из этого класса и вызываю new () для создания родителя. В новой роли в качестве базового класса он взрывается. Однако указатель this показывает, что все остальные переменные-члены имеют допустимые данные, поэтому моя догадка неверна. Конструктор тоже вызывается. Есть идеи? Спасибо.
UPDATE2:
Train::Train() : SpriteWindowFrame(200)
{
s_mutexProtectingTheGlobalData = new wxMutex();
m_window_rect = NULL;
m_thread = NULL;
m_ok = false;
m_accumulate_timer = new wxTimer();
m_accumulate_timer->SetOwner(this, ACCUMULATE_TIMER_ID);
m_autohide_timer = new wxTimer();
m_autohide_timer->SetOwner(this, AUTOHIDE_TIMER_ID);
m_autohide = false;
m_autohide_period = 5000;
m_controls.clear();
}
UPDATE:
//This version works.
SpaceInit::SpaceInit()
{
//Use INI config store. If you need something else, just
//create the appropriate object.
m_config_store = new IniConfigStore();
//Start up config.
Init();
m_t = new Trains();
return;
}
SpaceInit::~SpaceInit()
{
wxDELETE(m_config_store);
return;
}
Я могу сделать это:
m_t-> SomeMemberFunctionThatManipulatesVector ()
и это работает.
Этот не
SpaceInit::SpaceInit():Trains()
{
//Use INI config store. If you need something else, just
//create the appropriate object.
m_config_store = new IniConfigStore();
//Start up config.
Init();
return;
}
Я не могу сделать:
SomeMemberFunctionThatManipulatesVector ()
взрывается на векторе.
Я только что заметил, что этот указатель действительно запутан в констуркторе по умолчанию Train (). Я думал, что это не так, но это так. Поезд конструктор работает
но все разрушено.
Код конструктора «Мои поезда» выполняется мельницей. Просто инициализируйте вещи, добавьте пару вещей и т. Д. SpaceInit создается с помощью SpaceInit * t = new SpaceInit (); Train - производный класс, так что, может быть, это как-то связано с ним?