C ++: Как создать систему обмена сообщениями / событиями без недействительных указателей?

Я бы хотел иметь систему динамического обмена сообщениями в моем проекте C ++, где есть фиксированный список существующих событий, события могут запускаться в любом месте во время выполнения, и где вы можете подписать функции обратного вызова на определенные события.

Должна быть опция для аргументов, передаваемых в этих событиях. Например, для одного события могут не потребоваться аргументы (EVENT_EXIT) , а для некоторых может потребоваться несколько (EVENT_PLAYER_CHAT: указатель на объект игрока, строка с сообщением)

Первый вариант, позволяющий сделать это возможным позволяет передать указатель void в качестве аргумента диспетчеру событий при запуске события и получении его в функции обратного вызова.

Хотя: мне сказали, что указатели void небезопасны, и я не должен их использовать.

  • Как я могу сохранить (полу) динамические типы аргументов и подсчет для моих событий, не используя указатели void?
6
задан Jarx 20 March 2011 в 17:28
поделиться