У меня есть два следующих класса, которые демонстрируют шаблон Command. (К сожалению, оба имеют уникальное имя метода.)
//pseudocode
class Subscriber {
virtual void receive(const Event&) = 0;
}
class Dispatcher {
virtual void dispatch(const Event&) = 0;
}
У меня есть шаблон класса, у которого есть список некоторого типа с методом, чтобы перебрать этот список.
//pseudocode
template<typename T>
class Registry {
typedef list<T> ObjectList;
ObjectList _objects;
void iterate(const Event& event) {
for_each(_objects.begin(), _objects.end(), ...); //not sure what to do here
}
}
Я хотел бы использовать mem_fun
для создания Functor, который вызывает receive
или dispatch
в зависимости от ситуации. Я могу создать простой вариант использования, где я просто вызываю метод без каких-либо параметров. * 1010 Т.е. *
//pseudocode
class Simple {
void simple() {/*...*/}
}
и затем я повторяюсь:
for_each(_objects.begin(), _objects.end(), mem_fun(&Simple::simple);
К сожалению, я понятия не имею, как передать параметр event
в mem_fun. Глядя на заголовки, кажется, что я могу передать один параметр, но я не очень разбираюсь в C ++, чтобы понять, что мне нужно делать.
В конечном счете, я бы хотел, чтобы метод iterate
принимал тип функтора, поэтому он будет запускать этот метод для каждого метода в списке.
Я бы предпочел избегать Boost ... Я думаю, что это вполне возможно без перетаскивания этой структуры в микс.
Спасибо!