Обратные вызовы функций C ++: невозможно преобразовать из функции-члена в сигнатуру функции

Я использую стороннюю библиотеку, которая позволяет мне регистрировать обратные вызовы для определенных событий. Функция register выглядит примерно так. Она использует подпись обратного вызова.

typedef int (*Callback)(std::string);

void registerCallback(Callback pCallback) {
//it gets registered
}

Моя проблема в том, что я хочу зарегистрировать функцию-член как обратный вызов примерно так

struct MyStruct {
    MyStruct();
    int myCallback(std::string str);
};

MyStruct::MyStruct() {
    registerCallback(&MyStruct::myCallback);
}

int MyStruct::myCallback(std::string str) {
    return 0;
}

Конечно, компилятор жалуется, говоря

об ошибке C2664: 'registerCallback': не удается преобразовать параметр 1 из 'int (__thiscall MyStruct: : *) (std :: string) 'to' Callback '

Я искал библиотеки boost, такие как function и bind, но ни одна из них, похоже, не могла помочь. Гугл, чтобы получить ответ, но я даже не знаю, как это назвать, так что это не сильно помогло.

Заранее спасибо.

6
задан Jonathan Ross 8 November 2011 в 02:37
поделиться