C++ 'da lambda işleviyle ilgili bir sorunum var: Giriş olarak dize listesi verilen bir nesne dizisini dolduran bir eşzamansız yükleyici tanımlamaya çalışıyorum.C++ 11 lambda referansa erişemiyor
kodu (tam olarak değil ama anladınız umarım) şöyle görünür:
void loadData() {
while (we_have_data()) {
std::string str = getNext();
array.resize(array.size() + 1);
element &e = array.back();
tasks.push_back([&, str]() {
std::istringstream iss(str);
iss >> e;
}
}
for (auto task: tasks) {
task();
}
}
sonunda ben görevlerin listesini tarayın ve ilk erişim, uygulama çöker onları idam zaman lambda içindeki değişkene. Bir hata ayıklayıcının içinde çalışırsam, nesnenin kendi içinde doğru değerleri bulabilirim. Yanlış bir şey yapıyorum ama aslında ne olduğunu anlamıyorum.
, 'array' bir 'std :: vector' yer değiştirmesi mi? –