Qt说在事件循环返回后调用deleteLater。
因此,如果我有以下代码:

 Waypoint* wp = new Waypoint();
 WaypointWidget* wp_widget = new WaypointWidget(wp);
 ...
 delete wp;
 wp_widget->deleteLater();
 ...
 Waypoint* wp2 = new Waypoint();
 WaypointWidget* wp_widget2 = new WaypointWidget(wp2);


WaypointWidget的构造函数为:

WaypointWidget(Waypoint* wp){
  _wp = wp;//_wp is declared as private variable inside WaypointWidget.h
}


我担心的是,在某些情况下,wp2将使用与wp相同的地址,并且当deleteLater()导致wp_widget最终被删除时,对应的_wp将被删除。并且因为它具有与wp2相同的地址。 wp2将被删除/受影响。

最佳答案

您为wp_widget而不是deleteLater调用wp,因此不会设置相同的地址。如果您尝试访问_wp析构函数中的WaypointWidget,则可能出现错误。

我建议您阅读有关RAII的信息。

09-05 05:56