Есть некоторая стандартная системная функция (в примере Job_test
), вызывающая callback функцию с параметром.
Саму callback функцию я хочу расположить в составе класса, и потом использовать std::bind
для ее вызова с аргументом this
В примере ниже do_job2
компилируется нормально, а на do_job1
возникает ошибка компиляции:
no suitable user-defined conversion from "std::_Bind (ca *)>" to "ArCallBackFunction1" exists
Отличие заключается в том, что do_job1
вызывает callback с одним параметром, а do_job2
вызывает callback без параметра.
Подскажите пожалуйста как правильно написать пример с do_job1
?
typedef std::function<void(int a)> ArCallBackFunction1;
typedef std::function<void()> ArCallBackFunction2;
void Job_test1( ArCallBackFunction1 onRequest) { onRequest(2); };
void Job_test2( ArCallBackFunction2 onRequest) { onRequest(); };
class ca {
public:
void callBack1(int a) { Serial.println("a"); };
void callBack2() { Serial.println("a"); };
void do_job1() {
Job_test1( std::bind(&ca::callBack1,this));
}
void do_job2() {
Job_test2( std::bind(&ca::callBack2,this));
}
};
#include <iostream>
#include <functional>
typedef std::function<void(int a)> ArCallBackFunction1;
typedef std::function<void()> ArCallBackFunction2;
void Job_test1( ArCallBackFunction1 onRequest) { onRequest(2); };
void Job_test2( ArCallBackFunction2 onRequest) { onRequest(); };
class ca {
public:
void callBack1(int a) { std::cout<<"callBack1:"<<a<<'\n'; };
void callBack2() { std::cout<<"callBack2"<<'\n'; };
void do_job1() {
Job_test1( std::bind(&ca::callBack1, this, std::placeholders::_1));
}
void do_job2() {
Job_test2( std::bind(&ca::callBack2,this));
}
};
int main() {
ca c;
c.do_job2();
c.do_job1();
return 0;
}
std::placeholders
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь экспортировать из С++ в Python перегруженную функцию, которая должна принимать, в том числе, NoneНепонятно какой тип данных следует использовать...
Можно менять текстуру у добавленной модели в Arcgis ? У меня добавляется модель на сцену так :
У меня есть две таблицы: customers и phoneNumbers У одного customer может быть 1+ phoneNumbers
Пытаюсь настроить роутинг в Gateway в properties прописываю адрес и куда перенаправлять, не могу понять логику работы