Bazı lambda işlevleri için benzersiz olacak ve lambda'nın lansmanları arasında sürecek bir değişken oluşturmanın bir yolu var mı?
Daha dikkatli açıklaması: Bazı değerine başlatılan değişkenle lambda istiyoruz ve bunun değişken başlatması arasında sürmelidir:Lambdaya özgü değişken
std::function<void(void)> a=[]()
{
/*here we declare variable X and initialize it to 0*/;
std::cout<<X++;
};
a();a();
Yani bu 01
yazdırmalısınız Ama aynı zamanda ben "emin olmak gerekir önceki bölümde sonra bu
std::function<void(void)> b=a;
b();b();
denedim 01.
çıktısını bu yüzden X 'a" için benzersizdir' Statik değişkenler kullanarak, ancak kopyalar arasında paylaşılırlar (böylece bu iki parça 0123'ü yazdırır).
Peki, bunu yapmanın bir yolu var mı?
Neden karmaşık? Bir sınıf yazamaz mısın? – jrok
Biraz karmaşık bir sınıf sistemim var, bunlardan biri kullanıcı tarafından tanımlanan özel işlevler olarak lamda kullanıyor. Ve bu işlevler için veri depolama amacıyla soyut sınıfları kullanmaktan kaçınmak istiyorum. Ayrıca bu sınıfın nesneleri kopyalanabilir, statik değişkenler gibi basit çözümler işe yaramıyor. – jammer312
Bu tür "kopyalama" ne demektir. – Barry