从结构体中移除对象

Removing an object from a structure C++

本文关键字:对象 结构体      更新时间:2023-10-16

我遇到了一个小问题。我试着浏览一个结构,找到一个不符合我要求的对象,并删除它。

但是我得到一个"程序停止工作"后执行方法。你们能帮忙吗?

void myStruct::ObRemove(int n)
{
for (myStruct *d = p; d != NULL; d = d->sek){
    if (d->m < n){
        ;
    }
    else{
        myStruct *m=d;
        d = m->sek;
        delete m;
    }
  }
}

m是类的对象,该结构体是容器结构体。如果你需要任何额外的代码,请告诉我,我在这里等你。

这是结构类(注意:名称与我试图在英语中创建的不相似,但重写需要,所以我将其粘贴在我的lang中。)

 struct Mazgas
{
private:
Muziejus m;
Mazgas *sek;
Mazgas *p;
Mazgas *d;
public:
Mazgas() : p(NULL), d(NULL) {}
~Mazgas() { Naikinti(); }
void Naikinti();
void Deti(Muziejus m);
void Imti(Muziejus &m)
{
    m = d->m;
};
void Rikiuoti();
void Salinti(int n);
void Pradzia(){ d = p; }
void Sekantis() { if (d) d = d->sek; }
bool Yra() { return d != NULL; }
};

在else情况下,您将两次移动到链表中的下一个项(一次通过d = m->sek;,一次通过d = d->sek)。当您到达链表的末尾时,这可能导致一个问题(如果m->sekNULL,那么d->sek将尝试解引用NULL)。