質問内容
lambda内から外部の変数アクセスについて質問させてださい。
下記コードのfoo関数内でlambdaを利用しているのですが、lambdaの外部にあるbar変数にアクセスしたいのですができません。
c++
1typedef void (*CB)(int signal); 2 3void setSignalHandler(CB callback); 4 5void foo(Account *account) { 6 int bar; 7 setSignalHandler([](int signal){ 8 // ... = signal + bar; <------- bar にアクセスしたいができない! 9 }); 10}
そこで下記のようにローカル変数にアクセスできるようにラムダ導入子に=
を指定して [=](int signal){...}
としました。
c++
1... 2void foo(Account *account) { 3 int bar; 4 setSignalHandler([=](int signal){ <-------- ラムダ導入子を [=] に変更! 5 // ... = signal + bar; 6 }); 7}
しかし、今度はsetSignalHandler(CB callback) の引数の型に合わないとエラーが発生しました。
このような場合はどこを改善すればsetSignalHandler内から外部の bar 変数にアクセスできるようになるのでしょうか?
typedef void (*CB)(int signal);
このtypedefの定義を lambda に合わせることができればいいのかな?とネットを調べたのですがよく分かりませんでした。
以上、よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/31 04:58