Я бы хотел иметь систему динамического обмена сообщениями в моем проекте C ++, где есть фиксированный список существующих событий, события могут запускаться в любом месте во время выполнения, и где вы можете подписать функции обратного вызова на определенные события.
Должна быть опция для аргументов, передаваемых в этих событиях. Например, для одного события могут не потребоваться аргументы (EVENT_EXIT)
, а для некоторых может потребоваться несколько (EVENT_PLAYER_CHAT: указатель на объект игрока, строка с сообщением)
Первый вариант, позволяющий сделать это возможным позволяет передать указатель void в качестве аргумента диспетчеру событий при запуске события и получении его в функции обратного вызова.
Хотя: мне сказали, что указатели void небезопасны, и я не должен их использовать.