#pragma once namespace sp { template class MessageBase { public: using HandlerType = THandler; using MessageIdType = TMessageID; MessageBase() {} virtual ~MessageBase() {} virtual MessageIdType GetId() const = 0; virtual void Dispatch(HandlerType& handler) const = 0; }; } // namespace sp