У меня проблема с парой классов обработчиков событий, которые я пытаюсь написать. По сути, идея состоит в том, чтобы иметь класс обработчика событий для каждой логической группы объектов. В большинстве случаев события происходят между объектами и их обработчиками, но в некоторых случаях события также отправляются между объектами-обработчиками.
Я написал код так, чтобы события помещались в стек ( стек , как в структуре, созданной пользователем; сами события распределяются с использованием new
) и delete
d после их информации. читается и действует. Это вызывает у меня некоторые проблемы, потому что в одном случае событие отправляется по цепочке из трех обработчиков. Скажем, HandlerA
отправляет new Event
в HandlerB
, который помещает его в стек и читает его, отправляя в HandlerC
, который читает его и выполняет все, что ему нужно для выполнения, после чего delete
s указатель события и устанавливает его на NULL
. Теперь мы возвращаемся к HandlerB
и, ну, он также хочет delete
и NULL
указатель на событие. Но указатель является локальной переменной, и он в итоге удаляет один и тот же адрес дважды, что приводит к исключению.
Как вы обходите это? Вам нужно использовать один из этих причудливых auto_ptr
(здесь еще рано учиться), или я здесь упускаю что-то фундаментальное?