簡體   English   中英

在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的建議:無法分配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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM