在C++中组合两个lambda
Combining two lambdas in C++
我正在尝试编写如下的come代码。其目的是提供一个lambda函数,用于其他地方,该函数基于一些用户配置将位置转换为速度。
base_vel = [=] (myVectorClass position) { return myVectorClass(0.0, 0.0); };
rand_vel = [=] (myVectorClass position) { return myVectorClass(0.0, 0.0); };
if (base_vel_type == vel_type::TYPE_1) {
base_vel = [=](myVectorClass position)
{ // code that finds velocity as a function of position
return myVectorClass(x, y); };
}
// more types
if (add_random == true);
rand_vel = [=](myVectorClass position)
{ // code that finds a random component to velocity
return myVectorClass(x, y); };
}
return base_vel + rand_vel;
某些操作不正常。我怀疑if语句中的代码没有覆盖之前声明的lambda,或者我在末尾添加的两个lambda没有按预期工作。像这样的lambda函数应该如何合并?
感谢您的评论。
您想要的显示为:
return [=](myVectorClass position) { return base_vel(position) + rand_vel(position); };
根据@40two的建议:不能分配lambdas,OP需要将base_vel
和rand_vel
(以及所提到但未命名的函数的返回(定义为
std::function<myVectorClass(myVectorClass)> base_rel = //...
std::function<myVectorClass(myVectorClass)> rand_vel = //...
std::function<myVectorClass(myVectorClass)> blah_blah_blah() {
//...
}
让那些if
语句工作:D
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 如何返回一个类的两个对象相加的结果
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 两个字符串在 c++ 中不相等
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 两个文件使用彼此的功能-如何解决
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 从两个 lambda 的函数返回 lambda 时的链接器错误
- 如何通过返回类型区分两个 lambda 函数?
- 在C++中添加两个 lambda 函数
- 按两个条件对lambda表达C 进行排序
- 如何在C++中使用单个模板参数传递两个 lambda 函数
- 为什么lambda函数用于stl函数,例如sort(),c 中的max_element()函数以两个参数为输入
- 传递给template函数的两个lambda使得参数的类型推导不明确——为什么
- C++lambda的两个复制构造函数调用
- 在C++中组合两个lambda
- 在两个 lambda 之间共享变量