Ich habe ein Problem mit ein paar Event-Handler-Klassen zu schreiben, ich versuche. Grundsätzlich besteht die Idee darin, für jede logische Gruppe von Objekten eine Event-Handler-Klasse zu haben. In den meisten Fällen liegen die Ereignisse zwischen Objekten und ihrem Handler, aber in einigen Fällen werden auch Ereignisse zwischen Handler-Objekten gesendet.Aufruf auf das gleiche Objekt auf zwei Zeiger löschen
ich den Code geschrieben haben, so dass die Ereignisse auf einen Stapel gelegt werden (Stapel wie in Benutzer erstellt Struktur, die Ereignisse selbst zugeordnet sind mit new
) und delete
d nach deren Informationen gelesen und befolgt werden. Das gibt mir einige Probleme, weil in einem Fall das Ereignis entlang einer Kette von drei Handlern gesendet wird. Sprich, sendet HandlerA
eine new Event
zu HandlerB
, die es auf dem Stapel platziert und liest sie, es zu HandlerC
senden, die er liest und was auch immer es ausführen muss, nach dem es delete
s der Ereigniszeiger und setzt es auf NULL
. Nun machen wir einen Abstecher zu HandlerB
zurück und, na ja, es will auch delete
und NULL
der Zeiger auf das Ereignis. Aber der Zeiger ist eine lokale Variable, und es endet am Löschen der gleichen Adresse zweimal, was eine Ausnahme gibt.
Wie gehen Sie diese um? Sie benötigen einen dieser Phantasie auto_ptr
s benutzen (noch ein hier früh Lerner), oder bin ich etwas fehlt hier grundlegend?
Die Ereignisse werden auf Stapel zugeordnet oder sie werden auf Heap (mit neuen) zugewiesen und in einer Stack-Datenstruktur gespeichert? – Naveen
Die Ereignisse werden auf dem Heap unter Verwendung von new zugewiesen und in einer Stapelstruktur gespeichert. Ich denke, ich sollte den Wortlaut oben ändern ... –