Как получить в C++ указатель на функцию-член со связанными переменными?

Я хотел бы вызвать функцию g (из сторонней библиотеки), которая принимает в качестве входных данных указатель на функцию f, Эта функция указатель таков, что f Сам принимает некоторые аргументы.

Как моя функция f зависит от данных, и я не могу передать (ссылку на) эти данные в качестве параметра функции f потому что мне нужно реализовать f используя подпись, которая используется в указателе функции, я хотел бы сделать одну из двух вещей:

  • воплощать в жизнь f как (нестатическая) функция-член класса
  • реализовать вспомогательную функцию fHelper который принимает дополнительные аргументы, а затем создает указатель функции (но не объект функции), который имеет сигнатуру указателя функции, используемого в g и звонки fHelper с дополнительными аргументами, связанными с конкретными значениями.

Третье решение, которое не является ни потокобезопасным, ни приемлемым с точки зрения дизайна, заключается в использовании глобальной переменной.

Я смотрел на boost:bind а также std::mem_fun но не понимаю, работают ли эти концепции в этих условиях. Я был бы очень признателен за поучительный ответ и, возможно, некоторую предысторию о том, как обычно обрабатывается этот случай.

0 ответов

Другие вопросы по тегам