Segfault на push_back

В приведенном ниже фрагменте кода я получаю сообщение об ошибке в строке, вызывающей push_back ():

CTrigger CTriggerManager::AddTrigger(const std::wstring& eventName)
{
CTrigger trigger(eventName);
m_Triggers.push_back(trigger);
return trigger;
}

Если это не ясно из кода, я пытаюсь инициализировать объект trigger вставьте его в конец списка m_Triggers, Может кто-нибудь сказать, пожалуйста, почему это может привести к segfault?

При необходимости посмотрите код в полном контексте Вот.

0

Решение

Где TriggerManger используется и объявлен? Могу поспорить, что, поскольку он вызывает сбой push_back, фактический экземпляр CTriggerManager является нулевым, и первый доступ к переменной-члену (m_Triggers) вызывает нарушение прав доступа.

Я вижу, что один объявлен здесь, но никогда не создавался
world.cpp:

CTriggerManager* pTriggerManager = NULL;
2

Другие решения

проблема, конечно, не в этой функции и даже не в файлах TriggerManager.h / cpp — оба класса действительно просты и наивны. кстати, для инициализации m_EventName Лучше использовать список инициализации в конструкторе, а не оператор присваивания …

Попробуй использовать valgrind например … может быть, он покажет вам что-то интересное по реальной причине … — кажется, вы испортили внутренний список где-то перед вызовом AddTrigger

0

По вопросам рекламы [email protected]