Здравствуйте, sof.bix, Вы писали:
SB>да, это оно, насчет сигналов и слотов можете описать подробнее, они тоже за основу берут 2 ?
boost::signal берут за основу boost::function, которые в свою очередь берут за основу 2.
Я раньше писал на Delphi, для меня сейчас ближайший аналог события Delphi — это всё же boost::function :
1. На них можно назначить только один метод или NULL, как в Delphi.
2. При вызове, если событие может быть NULL, напо проверять If (myEvent_) myEvent_(Parameter), иначе вызов приведёт к исключению, как в Delphi.
3. Они потокобезопсны и достаточно легковесны.
Но при этом ситуация лучше чем в Delphi тем что:
1. Не требуется от обработчика точной сигнатуры — bind'ом можно добавить в метод свои параметры, переставить параметры события и проигнорировать параметры события. Можно записать в переменную типа boost::function как указатель на класс-обратотчик, так и сам класс-обработчик, то же касается дополнительных параметорв.
2. Событие инициализируется в NULL всегда, а не только когда является полем класса.