Пример

В примере создаются два класса обработчик и инициатор события, устанавливается связь между ними и иллюстрируется обработка события в нескольких объектах одновременно:

#include "stdafx.h" 

#include "sigslot.h"


struct EventRaiser { 
// источник события

 signal 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;

} 

Загрузка...