void MyTreeWidget::clear_tree(BasaEventWidget* &root)
{
if(root == NULL) return;
for(int i=0;i<root->Childnum;i++)
{
clear_tree(root->ChildEvent[i]);
}
delete root;
root = NULL;
}
注:BasaEventWidget 是一个窗口部件类,公有继承QWidget.
有成员变量vector ChildEvent
调用这个函数后 弹出信息Signal meaning : Segmentation fault 请问是什么原因
clear_tree(root->ChildEvent[i]);
这个是删除root下的树上的节点么?会不会导致Childnum数量改变,以及下标改变
建议你
for(int i=0;i<root->Childnum;i++)
修改为
for(int i=root->Childnum - 1;i>=0;i--)
调用 clear_tree(root->ChildEvent[i]); 这个的时候vector 下标越界了,你用qDebug打印或者断点调试,查看i的值是否大于ChildEvent 大小