Указатели функций-членов C ++ в классе и подклассе

У меня есть один базовый класс, который содержит карту для таких указателей функций

typedef void (BaseClass::*event_t)();
class BaseClass {
    protected:
        std::map<std::string, event_t> events;
    public:
        // Example event
        void onFoo() {
            // can be added easily to the map
        }
};

Обработка этого префекта работает, но теперь я хочу сделать BaseClass абстрактным базовым классом для получения из следующего:

 class SpecificClass : public BaseClass {
     public:
         void onBar() {
             // this is gonna be difficult!
         }
 };

Хотя я могу получить доступ к карте из SpecificClass , я не могу добавить onBar , потому что тип event_t определен только для BaseClass ! Есть ли возможность (возможно, с шаблонами?), Которая не приводит к определению event_t для каждого класса, который я буду использовать ...

(Нет необходимости использовать шаблоны! Любой хороший / подходящий подход было бы неплохо.)

Дополнительная справочная информация:

Все это для текстовой RPG. Мой базовый класс может называться Местоположение , а конкретный - в любом месте, например. Гражданский центр . Каждый объект Location подписывается на мою EventSystem , которая уведомляет все необходимые объекты, когда я запускаю событие. Поэтому я хочу сохранить на карте некоторые указатели на частные функции, содержащие действия с их «именем», например onSetOnFire (xD) в качестве ключа.

7
задан Christian Ivicevic 27 September 2011 в 19:29
поделиться