c++ - 是否可以在 C++ 中创建可以表示多个结构的数据类型?
问题描述
本质上,我正在为 SDL 创建一个包装器,它是 C++ 的媒体层库。我希望我的应用程序能够创建事件观察器(如 javascript's addEventListener()
)。对于不同类型的事件,我有几个不同的事件结构,如下所示。是否可以创建一个名为 Event 的数据类型,该数据类型可以传递给具有适当结构数据的用户定义处理函数。
struct MouseEvent {
EventType type;
int x;
int y;
uint8_t which;
bool down;
};
struct KeyboardEvent {
EventType type;
int keyCode;
const char* key;
bool lshift;
bool rshift;
bool lctrl;
bool rctrl;
bool lalt;
bool ralt;
bool lmeta;
bool rmeta;
bool numlock;
bool capslock;
bool ctrl;
bool shift;
bool alt;
bool meta;
};
struct WindowEvent {
EventType type;
};
struct WheelEvent {
EventType type;
int x;
int y;
bool dir;
};
因此,为了进一步解释,这里有一个示例:使用单击,以便创建一个 MouseEvent 并将该 MouseEvent 作为 Event 类型传递给一个检查 mousedown 侦听器的函数。这是这样做的好方法还是我只是愚蠢。
我已经研究过联合但是当你使用联合时,如果用户想在事件中访问数据,他们将不得不做一些事情,比如event.mouse.x
当我更喜欢它被访问时,event.x
也许我太挑剔了