У меня есть класс, который содержит два одинаковых нестатические функции, я хочу, чтобы назначить одну из них на лету функции указателя:C++ Arduino: назначить функцию указатель на функцию
Ач:
class A{
private:
void (*funcPtr)(int);
void do_sth(int i);
void do_sth_else(int i);
}
a.cpp:
A::A(int i){
if(i == 1)
A::funcPtr = A::do_sth; // or &A::do_sth;
else
A::funcPtr = A::do_sth_else; // or &A::do_sth_else;
}
Но я такая ошибка:
error: cannot convert 'A::do_sth' from type 'void (A::)(int)' to type 'void (*)(int)'
Я прочитал несколько похожих вопросов, но не могу применить их решения по моей проблеме.
Учитывая ограничения памяти Arduino, указатели на функции могут быть немного сложнее. Если компилятор может справиться с этим, почему бы не использовать [lambdas] (http://stackoverflow.com/questions/24352785/c-closure-to-pass-member-function-as-normal-function-pointer)? –