内部からそのオブジェクトを変更します。私はこのようなコードを持っているオブジェクトにラムダを渡すとラムダ
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
を撮影する今
を[XY問題](http://meta.stackexchange.com/questions/66377/what-is-theのようです-xy-問題)。 *実際の問題は何ですか?実際の問題を述べると、実際の問題に対する簡単な解決策が得られるかもしれません。 – Nawaz
私はそれぞれの敵に固有のルートがあるゲームを作っています。私はすべてのオブジェクトのために私の敵のスクリプトをサブクラス化したくないので、私はそれを機能させ、私の初期化コードでルートをコード化しようとしています。だから私がやりたいことはラムダの束を渡すことです。 – Rei