我声明在我的
中声明了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函数将CZombieView的zombieTestState设置为变量neighboor。当我试图在neighboor设置之后调用cz->zombs.remove(neighboor)
时,我得到异常,我在visual studio上的调用栈指向const _Nodeptr _Phead = this->_Myhead;
...我不知道为什么会发生这种情况,或者如果这是从列表中删除对象的错误方法...任何输入将不胜感激
void Op::setNeighboor2(MachineState * decoy2)
{
neighboor2 = decoy2;
cz->zombs.remove(neighboor2);
std::cout<<"SET";
}
我的程序在cz->zombs.remove(neighboor2)
处停止,打印声明甚至没有打印出来。
答案 0 :(得分:0)
您的cz可能未正确初始化。这将解释首先将其解除引用以攻击zombs成员然后在其上调用方法的崩溃。您应该在Op的构造函数中将其设置为nullptr,并在崩溃时检查该值。