class foo{
void bar(funct pointer) {
pointer("xxx");
}
}
In sketch:
void setup() {
foo(myBar);
}
void myBar(char* arg) {
}
在我的草图中,我称一个班级成员(foo)。我希望该成员在我的代码中调用一个函数(myBar)。写这个的正确和最简单的方法是什么?
答案 0 :(得分:1)
即使我发现这个问题很难理解,但我认为你想使用std::function
对象(C ++ 11):
#include <functional>
void bar(const std::function<void(int)>& p_func); // Takes a functor as an argument
上面的函数包含一个函数,它返回void,并以int
为参数。用法:
void aFunction(int p_index); // Typical function
std::function<void(int)> func = aFunction; // Make it a functor
bar(func); // Pass it as an argument.
在bar
内,您可以使用()
作为参数传递的仿函数。例如:
void bar(const std::function<void(int)>& p_func)
{
p_func(5); // Calls the function wrapped by p_func with 5 as an argument.
}
Functors也可以在一个类中使用。请注意,仿函数与函数指针不同,但对于您的应用程序,它似乎更方便。它还允许您使用lambda表达式(C ++等效于匿名函数)