я объявил объявило std::list<MachineState*> zombs
в моемУдаление объекта из списка
class CZombieView : public CWindowImpl<CZombieView>
{
public:
CZombieView();
void DrawGrid();
Gdiplus::Bitmap m_BitmapImage;
Gdiplus::Graphics m_GraphicsImage;
MachineState zombieTestState;
Machine<ZombieTraits> zombieMachine;
MachineState zombieTestState2;
MachineState zombieTestState3;
Machine<HumanTraits>humanMachine;
MachineState humanTestState;
MachineState humanTestState2;
MachineState humanTestState3;
std::list<MachineState*> zombs;
std::list<MachineState*> humans;
};
я объявил еще один класс. Opp.cpp
class Op
{
public:
CZombieView * cz;
MachineState * neighboor;
MachineState * neighboor2;
void setNeighboor(MachineState * decoy); //
void setNeighboor2(MachineState * decoy2);
virtual void Execute(MachineState& state) = 0;
};
Функция setNeighboor устанавливает zombieTestState в CZombieView к переменной neighboor. Когда я пытаюсь позвонить cz->zombs.remove(neighboor)
после того, как соседка уже установлена, я получаю исключения и стек вызовов на визуальных студийных точках до const _Nodeptr _Phead = this->_Myhead;
... Я не уверен, почему это происходит, или если это неправильный способ удаления объект из списка ... Любой вход был бы оценен
void Op::setNeighboor2(MachineState * decoy2)
{
neighboor2 = decoy2;
cz->zombs.remove(neighboor2);
std::cout<<"SET";
}
Моя программа останавливается прямо на cz->zombs.remove(neighboor2)
и оператор печати не даже получить печатные.
Возможно, вам стоит показать нам фактический код, предоставляющий ошибку. – Xymostech
@ Xymostech Я добавил, где моя программа останавливается ... Я не знаю, если это какая-то помощь? –
Похоже, что-то вроде коррупции. Это произойдет где-то еще в вашем коде, потому что нет ничего плохого в 'setNeighboor2'. – john