我正在尝试编写的几个事件处理程序类有问题。基本上,这个想法是为每个逻辑对象组创建一个事件处理程序类。在大多数情况下,事件发生在对象及其处理程序之间,但在某些情况下,事件也在处理程序对象之间发送。
我编写了代码,以便将事件放置在堆栈上(堆栈与用户创建的结构一样;事件本身是使用 分配的new
)和delete
d 在读取并执行其信息后。这给我带来了一些问题,因为在一种情况下,事件是沿着三个处理程序的链发送的。比如说,HandlerA
发送一个new Event
to HandlerB
,它将它放在堆栈上并读取它,将它发送到HandlerC
,它读取它并执行它需要执行的任何操作,然后它delete
是 Event 指针并将其设置为NULL
。现在,我们回到HandlerB
并且,好吧,它也想delete
和NULL
指向事件的指针。但是指针是一个局部变量,它最终会删除两次相同的地址,从而引发异常。
你怎么解决这个问题?您是否需要使用其中一个花哨auto_ptr
的 s(在这里仍然是早期学习者),还是我在这里缺少一些基本的东西?