如何在C++中存储一个稍后调用的函子
这个问题可能很幼稚,如果是这样,请原谅我,因为我正在学习如何在C++中存储一个稍后调用的函子,c++,lambda,callback,invoke,functor,C++,Lambda,Callback,Invoke,Functor,这个问题可能很幼稚,如果是这样,请原谅我,因为我正在学习 请考虑下面的C++类伪代码: 它应该说明我试图实现的目标,即存储某种回调以供以后调用 P>那么,在不使用Boost或其他非标准依赖性的情况下,我如何以最简单的方式在现代C++中进行这项工作? 有哪些选择和注意事项 需要注意的是,回调的签名是预先知道的,不会更改 另外,我要存储的回调可能有不同的形式,如独立函数、成员函数或lambda。修改结构B如下: struct B { std::function<bool(int)&g
请考虑下面的C++类伪代码:
它应该说明我试图实现的目标,即存储某种回调以供以后调用 <> P>那么,在不使用Boost或其他非标准依赖性的情况下,我如何以最简单的方式在现代C++中进行这项工作? 有哪些选择和注意事项 需要注意的是,回调的签名是预先知道的,不会更改另外,我要存储的回调可能有不同的形式,如独立函数、成员函数或lambda。修改结构B如下:
struct B {
std::function<bool(int)> executor;
void setExecutor(std::function<bool(int)> f) {
executor = f;
}
bool doSomethingLater(int in) {
return executor(in);
}
};
lazyAss.setExecutor([&](int i)->bool { return myExecutor.doSomething(i); });
你可能想看看Stephan T Lavavej的Youtube talk on functional not compile?错误:模板名称“STD::Falk”没有参数列表时无效,请考虑下面的C++类伪代码:这没有帮助。提供一个复制你的问题,并详细说明你对错误信息的怀疑,请逐字逐句地引用这些信息。你真的应该把它归结为实际问题。您的问题是关于如何正确设置std::function的模板参数,是关于如何将绑定到对象的成员函数保存到std::function,还是另一个问题。。。我的问题是我不知道怎么做。如果我知道正确的代码,我会写它!谢谢,这很有用!
lazyAss.setExecutor([&](int i)->bool { return myExecutor.doSomething(i); });