以下のような高次クラスを2つのラムダ関数a1()とa2()を含むメソッドA()で考えてみましょう。私はa1の中からa2を呼び出すことができるようにしたいと思います。私は(A1内部の二行目)、そうするときしかし、私はエラーを取得するラムダ関数を別のラムダ関数から呼び出す方法
エラー:
の変数は、「デフォルトのキャプチャモードが指定されていないため、暗黙的に取得することができません」私はしないでくださいこのエラーメッセージを理解してください。私はここで何を捕まえることになっていますか? [this]をラムダ定義に使用すると、fooクラスのメソッドにアクセスできますが、私が望むことをやる方法は不明です。
私はこれをまっすぐに設定していただきありがとうございます。
class foo
{
void A()
{
auto a2 = [this]() -> int
{
return 1;
};
auto a1 = [this]() -> int
{
int result;
result = a2();
return result;
};
int i = a1();
int j = a2();
}
};
すばらしい対応をありがとうございますが、私はまだ不明です。 [これ、&a2]は動作しますが、[これ、&]はありません。 – David
@Davidはどのような意味で '[this、&]'は動作しませんか? – Brian
@David - コンパイラとバージョンを指定すると便利です。たとえば、VS 2017では、エラーメッセージはかなり明確ですが、 '[&、this] 'でなければなりません。 – zzxyz