是否可以从 C++ 中的 lambda 函数创建仿函数?
如果不是,为什么不呢?
这给我带来了一些令人吃惊的麻烦。
实际用例:
另一个函数需要像这样创建一个仿函数:
Class::OnCallBack::MakeFunctor(this, &thisclass::function);
通常为了使用它,我必须在 thisclass
中创建一个函数,这意味着添加到头文件中。
大量使用后,有点臃肿。
我想通过做类似的事情来避免这种膨胀:
Class::OnCallBack::MakeFunctor(this,
void callback()
{ []() { dosomething; } });
出现问题的是初学者的编译错误。 即使它确实编译了,是否可以做这样的事情?
最佳答案
如果你想存储 lambda 函数,你可以像这样为 void()
函数做这件事
std::function< void() > callback = [](){ dosomething };
或者,对于具有返回类型和参数的函数,
std::function< int( int ) > callback = []( int i ){ return dosomething(i);}
不过,您需要包含此文件才能使用 std::function
。
#include <functional>
关于c++ - 从 C++ 中的 Lambda 函数创建 Functor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30713989/