Как передать функцию в качестве параметра в другую функцию?

В кокосе есть класс ActionFloat, а в нем функция:
static ActionFloat* create(float duration, float from, float to, ActionFloatCallback callback);

Тип ActionFloatCallback объявлен так:
typedef std::function<void(float value)> ActionFloatCallback;


Как мне в конструкторе класса передать туда ссылку на метод моего класса?
MyClass::MyClass()
{
   ActionFloat* floatAction = ActionFloat::create(0.5f, 0, 1, this->callback); // так не работает
   //ActionFloat* floatAction = ActionFloat::create(0.5f, 0, 1, testFunc); // так работает
}

void MyClass::callback(float t)
{
    CCLOG("test: %f", t);
}

void testFunc(float t)
{
    CCLOG("test: %f", t);
}
  • Вопрос задан
  • 1096 просмотров
Решения вопроса 2
@badguy
С++/Qt разработчик
Например через лямбду:
MyClass()
{
     ActionFloat * action = create(0.5f, 0, 1, [this](float arg) {callback(arg); });
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы