- #include <algorithm>
- #include <iterator>
- #include <fstream>
- #include <iostream>
- #include <deque>
- #include <string>
- #include <ctime>
- struct event
- {
- int type;
- int serial;
- };
- struct press_event
- {
- struct event base;
- int value;
- };
- struct mouse_event
- {
- struct event base;
- int pos;
- };
- typedef union
- {
- int type;
- struct event base;
- struct press_event press;
- struct mouse_event mouse;
- }event_data;
- int main(int argc, char* argv[])
- {
- event_data data;
- srand((unsigned long)time(NULL));
- int mod = rand() % 3;
- if (mod == 0)
- {
- event temp;
- temp.type = 0;
- temp.serial = 0;
- data.base = temp;
- }
- else if (mod == 1)
- {
- press_event press_temp;
- press_temp.base.type = 1;
- press_temp.base.serial = 1;
- press_temp.value = 1;
- data.press = press_temp;
- }
- else if (mod == 2)
- {
- mouse_event mouse_temp;
- mouse_temp.base.type = 2;
- mouse_temp.base.serial = 2;
- mouse_temp.pos = 2;
- data.mouse = mouse_temp;
- }
- else
- {
- data.type = -1;
- }
- switch (data.type)
- {
- case -1:
- std::cout<<"occur -1"<<std::endl;
- break;
- case 0:
- std::cout<<"base event:"<<data.base.type<<data.base.serial<<std::endl;
- break;
- case 1:
- std::cout<<"press event:"<<data.press.base.type<<data.base.serial<<data.press.value<<std::endl;
- break;
- case 2:
- std::cout<<"mouse event:"<<data.mouse.base.type<<data.mouse.base.serial<<data.mouse.pos<<std::endl;
- break;
- default:
- break;
- }
- return 0;
- }
union类型用法例子
最新推荐文章于 2024-07-29 23:35:23 发布