从列表中移除对象
Removing an Object From a list
我已经在我的
中声明了一个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;
};
setneighbor函数设置zombieview的zombieTestState为变量邻居。当我尝试在邻居已经设置后调用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)
,打印语句甚至没有被打印。
可能您的cz没有正确初始化。这将解释在第一次解引用它以获得僵尸成员然后在其上调用方法时崩溃的原因。您应该在Op的构造函数中将其设置为nullptr,并在它崩溃时检查该值。
相关文章:
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- 如何在不销毁对象的情况下返回对象列表
- 如何使用Q_PROPERTY公开自定义对象列表
- 什么更好?返回对象指针列表?或返回指向对象列表的指针?
- c++ 循环访问对象列表并删除对象
- 循环访问对象列表 c++
- Cython正在获取C++对象列表的长度
- 如何在屏幕上显示对象列表?
- Strcmp 类行为应用于C++中的对象列表
- 如何迭代指针指向的对象列表?
- C++对象列表数组
- 使用BOOST :: PYTHON返回裸露的类对象列表,这些对象是不可复制的
- 返回对象列表
- C 链接对象列表
- 使用for_each从对象列表中调用打印功能
- 从对象列表中获取具有特定成员值的所有对象
- 按指针列出的 C++ 对象列表
- 子类对象列表重新解释为基类对象列表?(C++11).
- 在C++中的混合对象列表中使用相同的方法
- Python:我们应该如何编写一个函数来返回对象/列表和布尔标志