|
||||
|
ПримерВ примере создаются два класса обработчик и инициатор события, устанавливается связь между ними и иллюстрируется обработка события в нескольких объектах одновременно: #include "stdafx.h" #include "sigslot.h" struct EventRaiser { // источник события signal<const char*> event; // const char* – тип аргумента. может быть void void raise(const char *eventName) { printf("raising %s event\n", eventName); event.raise(eventName); } } g_Raiser; // глобальный объект struct EventHandler { // обработчик события const char *color; slot handler; // переходник void onEvent(const char *eventName) { // обработчик события printf("\t%s event handled in %s object\n", eventName, color); } EventHandler(const char *clr): color(clr) { handler.init(g_Raiser.event, onEvent, this); // установим связь } }; int main(int argc, _TCHAR* argv[]) { EventHandler red("Red"); g_Raiser.raise("Small"); // событие обработается в red { { EventHandler blue("Blue"); g_Raiser.raise("Big"); // событие обработается в red и blue } EventHandler green("Green"); g_Raiser.raise("Medium"); // событие обработается в red и green. // объект blue уничтожен, связь разорвана } return 0; } |
|
||
Главная | В избранное | Наш E-MAIL | Добавить материал | Нашёл ошибку | Наверх |
||||
|