先记录一下代码
一:先将指针释放掉,在显示对话框
void MainWindow::canResponseError(SendCanMsgThread *sendCanMsgThread ){
std::cerr<<" canResponseError "<<std::endl;
delete sendCanMsgThread;
sendCanMsgThread = NULL;
QMessageBox msgBox;
msgBox.setText("Could not get can response " );
msgBox.exec();
}
此种情况下,先执行指针对应对象的析构函数,再执行对话框的显示
二:先显示对话框,再释放掉指针
void MainWindow::canResponseError(SendCanMsgThread *sendCanMsgThread ){
std::cerr<<" canResponseError "<<std::endl;
QMessageBox msgBox;
msgBox.setText("Could not get can response " );
msgBox.exec();
delete sendCanMsgThread;
sendCanMsgThread = NULL;
}
此种情况下,会先显示对话框,此时不执行指针对应对象的析构函数,直到点击关闭对话框后,析构函数才会执行