我在 c++11 中有这段代码
// To register a callback
void registerCallback(void (*fnPtr)(int state)) {
}
class Test {
public:
// To pass in the callback
void helloTest(int state) {
}
void registerTheCallbackHere()
{
// This does not pass ( I want to it to pass)
auto lamda = [this](int state) {
this->helloTest(state);
};
registerCallback(lamda); // error here
// But this one pass
auto lamda2 = [](int state) {
};
registerCallback(lamda2); // no error
}
};
我有一个回调函数作为参数的函数,称为 registerCallback。 我有一个测试类,它有一个方法“helloTest”。我想使用 lamda 函数将此方法传递给测试类的另一个名为 registerTheCallbackHere 的方法中的 register 回调,但它不起作用。 你能帮忙提供一个替代解决方案吗?
只有无捕获的 lambda 可以绑定到您的 registerCallback 函数的参数,但是如果您可以修改 registerCallback 函数,那么您可以使用 std::function:
#include <functional>
void registerCallback(std::function<void(int)> fnPtr) { }
(我按值传递,但您可以决定按引用传递。)
未来可能出现的问题: