У меня мало опыта с общим программированием (мне он редко нужен), но теперь я пытаюсь внедрить систему событий для своего приложения. Это то, что я имел в виду для реальных событий:Присоединение аргументов любого типа к событию
template <typename Arg_Type> struct Event {
std::vector<std::string> ids; // All the objects to pass the event to
Action action; // Action to perform (enum)
std::vector<Arg_Type> args; // List of event-dependant arguments
};
Но тогда я хотел бы хранить свои различные события в векторе:
std::vector<Event*> events;
К сожалению, это не кажется, что просто!
Как я могу добиться желаемого эффекта? То есть, возможность передавать события с различными типами аргументов?
Я знаю, что я мог бы сделать что-то вроде этого:
struct Event {};
struct EventFloat : public Event {};
struct EventString : public Event {};
Но это только кажется, безвкусный и труднее поддерживать.