删除其中的一个元素,却得到分割错误

Getting segmentation fault while removing one element in it

本文关键字:元素 错误 分割 一个 删除      更新时间:2023-10-16

这是一个代码,将删除一个演员在一个cast。我在电影和演员之间建立了联系。这段代码检查movie是否存在然后它查找它的Cast当它找到我们要找的演员时它删除它。然而,虽然这段代码对我来说似乎很合理,但我得到了分割错误。原因是什么,在这种情况下我们应该注意什么来避免段故障?

if( c-> next ->  name == actorFirstName && c -> next -> lastName == actorLastName)

假设c->next不是NULL,但是循环只确保c不是NULL。

就像DrC说的,"下一步"是错误的。试试这个:

    void MovieDatabase:: removeActor( const string movieTitle, const string actorFirstName, const string actorLastName )
{
        for(Movie* m= headMovie; m != NULL;  m = m-> next){
               if(m-> title == movieTitle && m -> headCast !=NULL){
                        for(Cast* c = m -> headCast; c != NULL; c= c-> next){
                                if( c ->  name == actorFirstName && c -> lastName == actorLastName){
                                        Cast* temp = c-> next;
                                        delete c;
                                        c = temp;

                           }
                    }
            }
    }
}