ラムダ関数に固有の変数を作成する方法はありますか?
もっと慎重説明:私はいくつかの値に初期化変数とラムダをしたい、そしてその変数が起動の間続く必要があります。ラムダ固有の変数
std::function<void(void)> a=[]()
{
/*here we declare variable X and initialize it to 0*/;
std::cout<<X++;
};
a();a();
だから、これは01
をプリントアウトする必要がありますしかし、また、私は、「それを確認する必要があり前の部分の後に、この
std::function<void(void)> b=a;
b();b();
は、私が試した01
をプリントアウトする必要がありますので、Xは、 『A」のためのユニークな』静的変数を使用していますが、それらはコピー間で共有されています(したがって、これら2つの部分は0123を出力します)。
だから、それを行う方法はありますか?
なぜ複雑ですか?あなたはクラスを書くことができませんか? – jrok
私は多少複雑なクラスのシステムを持っていますが、そのうちの1つはlamdasをユーザー定義のカスタム関数として使用します。そして私は、これらの関数のためにデータ記憶の目的で抽象クラスを使用することを避けたいと思います。また、このクラスのオブジェクトもコピーできるので、静的変数のような単純なソリューションは機能しません。 – jammer312
「コピー」とは何かという意味です。 – Barry