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 <时/ em>最终被删除。相应的 _wp 将被删除。因为它与 wp2 具有相同的地址。 wp2 将被删除/影响。
答案 0 :(得分:2)
您为wp_widget调用deleteLater
,而不是wp
,因此不会设置相同的地址。如果您尝试访问_wp
析构函数中的WaypointWidget
,可能会出现错误。
我建议你阅读RAII。