私は、カーネル関数への関数ポインタを持ち、外部から変更できるクラスを持っています。C++ラムダ - キャプチャメンバ変数
「提示された」動作を実現するにはどうすればよいですか?ラムダ内のクラス変数を読み込みます。私はf
を内部に渡してそれをバイパスし、f.bar.i
と書くことができますが、これはあまり良い解決策ではありません。
int &i = f.bar.i;
f.kernel = [&i]() -> double { return i*i; };
を作成することができます
f.kernel = [&i = f.bar.i]() -> double { return i * i; };
、としてそれを書くことができますC++ 14では
'[&f](){return f.i * f.i; } '? –
@KerrekSB質問を編集しました –
基本的には 'f.kernel()'を呼びたいし、 'kernel'はメンバ関数のように自動的に' f'にバインドする必要がありますか? – dhke