Рассмотрим следующий класс
class Foo
{
typedef bool (*filter_function)(Tree* node, std::list<std::string>& arg);
void filter(int filter, std::list<std::string>& args)
{
...
if (filter & FILTER_BY_EVENTS) {
do_filter(events_filter, args, false, filter & FILTER_NEGATION);
}
...
}
void do_filter(filter_function ff, std::list<std::string>& arg,
bool mark = false, bool negation = false, Tree* root = NULL)
{
...
}
bool events_filter(Tree* node, std::list<std::string>& arg)
{
...
}
};
Я могу передать events_filter
в качестве параметра do_filter
только тогда, когда events_filter
является static
членом. Но я не хочу делать это static
. Есть ли способ передать указатель на функцию-член другой функции? Возможно, используются библиотеки ускорения (например, функция) или что-то в этом роде.
Спасибо.