【发布时间】:2023-03-06 20:07:01
【问题描述】:
我的代码如下所示:
struct LambdaContainer{
std::function<void(void)> f;
float x = 10;
}
struct MyClass{
LambdaContainer c;
}
void someFunction(){
MyClass ins;
LambdaContainer cont;
cont.f = [&cont](){
// I want to modify 'x' of LambdaContainer that is inside MyClass
cont.x = 10; // won't work because cont will be copy constructed
// and this cont might not exist anymore
};
ins.c = cont;
aVectorSomewhere.push_back(ins);
}
有什么方法可以捕获 LambdaContainer 的“cont”,以便它指的是从哪里调用 lambda? (顺便说一下,我没有使用指针)
感谢您提供这么好的答案 :) 我想我现在可以让它工作了
【问题讨论】:
-
好像是XY problem。 实际问题是什么?一旦你陈述了实际问题,你可能会有一个简单的解决方案。
-
我正在制作一个游戏,其中每个敌人都有独特的路线。我不想为我拥有的每个对象子类化我的敌人脚本,所以我试图让它发挥作用,并在我的初始化代码中对路由进行编码。所以我打算做的是传递一堆 lambda。