[英]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_vel
和rand_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.