Хороший способ добавить обработчики событий?

Я делаю Gui API для игр. В основном у меня есть обратные вызовы событий в моем классе, которые являются указателями на функции. Я подумал о том, чтобы напрямую разрешить пользователю = указатель функции ex:

widget->OnPaintCallback = myPaintFunc;

Но мне не нравится, как я не могу проверить значение NULL или сделать что-нибудь еще. Это также заставляет мой класс чувствовать себя незащищенным.

Я также думал о наличии сеттера для каждого обратного вызова, но это будет беспорядочно в классе (у меня их более 50)

Затем я подумал о функции, которая запрашивает строку указание, для какого события предназначен обработчик, и его указатель на функцию. Но это привело бы к ненужным ссылкам на документацию, чтобы узнать строку, и еще больше запутало бы пользовательские недокументированные виджеты.

Есть ли лучшая, более чистая альтернатива?

Спасибо

Может ли решение casablankca иметь несколько аргументов?

1
задан jmasterx 10 October 2010 в 05:07
поделиться