这是一个代码,可以删除一个演员阵容中的一个演员。我在电影和他们的演员之间建立联系。所以这段代码检查电影是否存在,然后它看起来是Cast,当它找到我们正在寻找的actor时,它会删除它。 但是,虽然这段代码对我来说似乎很合理,但我遇到了分段错误。 可能是什么原因,在这种情况下我们应该注意不要陷入错误?
答案 0 :(得分:1)
点
if( c-> next -> name == actorFirstName && c -> next -> lastName == actorLastName)
你假设c-> next不是NULL但你的循环只确保c不是NULL。
答案 1 :(得分:0)
就像DrC所说的那样," next"是错的。试试这个:
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;
}
}
}
}
}