C++ 如何使用多态性实现这一点?

C++ 如何使用多态性实现这一点?,c++,C++,我的游戏gui api支持2个后端。它们的工作方式类似,并且使用事件队列。问题是,我不希望我的API处理整个游戏的事件,只想偷看一个事件并做一些事情,然后让游戏用它做任何事情。这就是为什么我不能给它事件队列。我的问题是,我将有一个名为handleEvent的方法,它将接收一个指向事件的指针,但要使它同时对这两个事件都起作用,这将是一个空白*但我觉得这是一个糟糕的做法。我能做什么? 谢谢为处理程序查看的事件创建基类。从两个后端为事件创建子类。当引发事件时,将它们包装在适当的子类中。然后,处理程序可

我的游戏gui api支持2个后端。它们的工作方式类似,并且使用事件队列。问题是,我不希望我的API处理整个游戏的事件,只想偷看一个事件并做一些事情,然后让游戏用它做任何事情。这就是为什么我不能给它事件队列。我的问题是,我将有一个名为handleEvent的方法,它将接收一个指向事件的指针,但要使它同时对这两个事件都起作用,这将是一个空白*但我觉得这是一个糟糕的做法。我能做什么?
谢谢

为处理程序查看的事件创建基类。从两个后端为事件创建子类。当引发事件时,将它们包装在适当的子类中。然后,处理程序可以获取基类的对象。

您要做的是使用虚拟的
handleEvent
方法创建基类。您的两个后端中的每一个都需要重写这个基类,并给出自己的
handleEvent
实现

好吧,这取决于许多不同的因素,但我怀疑您会想要(对于这种特定的场景),除非您的事件类型具有类似的特征和处理行为。在任何一种情况下,都应该有一个表示任意事件的纯虚拟基类,然后应该创建从该基类派生的具体事件类。然后,事件处理程序可以接受基类型,并使用公共接口来处理该事件。如果您发现自己正在执行类似“如果是这种类型的事件,那么_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

class Event {
    public:
        virtual void dispatch(EventHandler* handler) const = 0;
};

class EventHandler {
    public:
        virtual void handle(const Event* event) {
            event->dispatch(this);
        }
        virtual void handleMouseClickEvent(const MouseClickEvent* mouseclick) {
            // ...
        }
};

class MouseClickEvent : public Event {
     public:
        virtual void dispatch(EventHandler* handler) const {
            handler->handleMouseClickEvent(this);
        }
};

很好,问题是:HeaveEngEvices(AdRyRovivEngEngEnter事件)和HANDLeEvCEL(SDLIIGEL事件),而这是一个理想的设计,因为API是C,所以我不能真正做到这一点。C++已经标记了这个问题。您的API必须是C语言的,还是仅仅是您在C语言中依赖的API?如果是后者,您可以将您的C API封装在类中,这应该相当简单。如果是前者,你可以用函数指针来模拟它,尽管这有点混乱。