Метод класс как С колбек
От: AHOHUM  
Дата: 09.04.15 07:55
Оценка: :)
Имеется С библиотека с неизменяемым интерфейсом, одна из функций выглядит так:
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));
тип не сходится.

В чём загвоздка?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.