传递唯一函数作为参数
Passing a unique function as a parameter
我有一个实例化的类:
Param::Param(std::function<float()> func)
将一个内部方法设置为传入的方法。我所困惑的是如何调用这样的东西:
new Param(std::function<float()>{ return 4.0; });
我不想定义一个函数来传递,我可以为这个传递一个唯一的函数吗?
您正在寻找的是匿名函数声明。此功能仅为c++ 11提供。如果您正在使用g++
编译$ g++ -std=g++0x my_file.cpp
#include <functional>
#include <vector>
#include <iostream>
int call_me(std::function <int(int)> func, int arg = 1)
{
return func(arg);
}
int main(int argc, char ** argv)
{
std::cout << "Default arg: " << call_me([](int v){return v*2;}) << std::endl;
std::cout << "Passing 5: " << call_me([](int v){return v*2;}, 5) << std::endl;
return 0;
}
在call_me()声明中,我们说第一个参数是一个接收一个整数并返回一个整数的函数。然后声明一个名为arg的默认整型实参。
然后我们调用call_me()
,传递一个匿名函数,该函数接收一个整数并将其乘以2返回,我们不传递参数。然后我们重复,但传递5作为匿名函数的参数。
[](int v){return v*2;}
相关文章:
- 将可变参数函数的参数封装在类实例中
- QML 使用带有参数C++函数
- 使用可变参数函数作为模板参数
- 如何在C++中伪造虚拟可变参数函数模板?
- 为什么可变参数函数不适用于模板
- C++ std::functional 中的可变参数函数模板
- 可变参数函数指针的定义对于VxWorks spyLib来说不清楚
- 使用可变参数函数覆盖具有不同函数签名的虚函数
- 考虑引用和常量的可变参数函数包装器
- 使用可变参数函数将整数和/或整数数组放入单个 int 数组中
- 在可变参数函数中转发特定范围的参数
- 通过引用传递参数;函数返回类型是否必须为 VOID?
- 使用带有一个参数函数的递归找到数字的平方
- 可变参数函数模板不能很好地使用 std::function 作为参数
- 多个可变参数函数的单个模板参数包?
- 参数数据类型未知的可变参数函数
- 可变参数函数参数包扩展
- 使用模板可变参数函数将多个参数传递给另一个函数
- 对可变参数函数的递归调用的链接器错误
- 通过像printf这样的可变参数函数传递一个带有常量字符*转换函数的类