Соблазнительно иметь базовый класс в качестве основного типа сообщения, но я бы посоветовал сделать его виртуальным классом, чтобы каждое сообщение было приведено для использования. Эта симметрия делает ее гораздо менее склонной к ошибкам позже, когда сложность (неизбежно) возрастает

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

Должна быть опция для аргументов, передаваемых в этих событиях. Например, одно событие может не нуждаться в аргументах(EVENT_EXIT)и некоторым может понадобиться несколько(EVENT_PLAYER_CHAT: Player object pointer, String with message)

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

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

Как я могу сохранить (полу) динамические типы аргументов и подсчитать для моих событий, не используя указатели void?

Ответы на вопрос(5)

Ваш ответ на вопрос