gpt4 book ai didi

c++ - 在 C++ 中组合两个 lambda

转载 作者:行者123 更新时间:2023-11-30 01:52:54 25 4
gpt4 key购买 nike

我正在尝试编写如下代码。目的是提供一个 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 的建议:无法分配 lambda 并且 OP 需要将 base_velrand_vel(以及提到但未命名的函数的返回值)定义为

std::function<myVectorClass(myVectorClass)> base_rel = //...
std::function<myVectorClass(myVectorClass)> rand_vel = //...
std::function<myVectorClass(myVectorClass)> blah_blah_blah() {
//...
}

为了那些 if 语句起作用 :D

关于c++ - 在 C++ 中组合两个 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23839538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com