Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > boost::signals в карте


Автор: T0ohtik 25.2.2009, 18:59
Каким образом в карте можно хранить законекченные сигналы, чтоб в конечном итоге я по ключу из карты достал сигнал, вызвал его и передал ему параметры. smile 
Спасибо! 

Автор: Lazin 25.2.2009, 19:28
у сигналов разные сигнатуры, или одинаковые?

Автор: T0ohtik 25.2.2009, 19:30
Ну вообще то я привел к одинаковой, но не отказался бы и от примерчика с разной.smile

Автор: Lazin 25.2.2009, 19:46
тогда все просто
Код

std::map<key_type, boost::signal<void (int x, int y)>::slot_type> slot_map_type;

Автор: T0ohtik 25.2.2009, 20:06
а как имеено произвести запись в него законекченного сигнала? На ум просто ничего не приходит, кроме как:
Код

slot_map_type[key] = boost::signal2<void, int, int>::connect((&CServer::AcceptNewConnection, this, nListenSocket));

но понятное дело это не правильно, а как правильно?

Автор: Lazin 25.2.2009, 22:13
а сигналы разве нужно записывать?
я думал тебе нужно создать слот, присоединить его к нескольким сигналам, а потом записать слот в map
Код

boost::signal<int (int, int)>::slot_type slot;
slot.connect( boost::bind( &CServer::AcceptNewConnection, server_ptr ) );
slot_map_type slot_map;
slot_map.insert( std::make_pair(key, slot) );
....вызов
slot_map_type::iterator i = slot_map.find(key);
if (i != slot_map.end())
    i->operator() ( .... параметры ... );

Автор: T0ohtik 4.3.2009, 14:09
Спасибо, оноsmile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)