C ++: ¿Cómo construir un sistema de eventos / mensajería sin punteros nulos?

Me gustaría tener un sistema de mensajería dinámica en mi proyecto C ++, uno donde haya una lista fija de eventos existentes, los eventos se pueden activar en cualquier lugar durante el tiempo de ejecución, y donde puede suscribir funciones de devolución de llamada a ciertos eventos.

Debería haber una opción para los argumentos pasados en esos eventos. Por ejemplo, un evento podría no necesitar ningún argumento(EVENT_EXIT), y algunos pueden necesitar múltiples(EVENT_PLAYER_CHAT: Player object pointer, String with message)

La primera opción para hacer esto posible es permitir pasar un puntero nulo como argumento al administrador de eventos al activar un evento y recibirlo en la función de devolución de llamada.

Aunque: me dijeron que los punteros vacíos no son seguros y que no debería usarlos.

¿Cómo puedo mantener los tipos de argumentos (semi) dinámicos y los recuentos de mis eventos sin utilizar punteros nulos?

Respuestas a la pregunta(5)

Su respuesta a la pregunta