Имеется
С библиотека с неизменяемым интерфейсом, одна из функций выглядит так:
typedef void(*Callback)(void * internalState, Data * data);
void addCallback(void * internalState, Callback * callback);
internalState – сугубо внутренняя структура библиотеки, data – данные получаемые из библиотеки, т.е. никаких void * userData нет.
Хотелось бы
в плюсах 11, чтобы сallback вызывал метод класса. Решение со статическим методом и глобальным this – совсем уж убого.
Не могу понять, возможно ли здесь воспользоваться лямбдой или bind(оба параметра: internalState, data — должны быть доступны):
addCallback(state, [] (void * internalState, Data * data) {});
естественно не имею доступа к полям класса в теле,
addCallback(state, [this]/[&] (void * internalState, Data * data) {});
или
void Class::method(void * internalState, Data * data);
addCallback(state, std::bind(&Class::method, this, std::placeholders::_1, std::placeholders::_2));
тип не сходится.
В чём загвоздка?