Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++中存储一个稍后调用的函子_C++_Lambda_Callback_Invoke_Functor - Fatal编程技术网

如何在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); });