Время жизни переменных в лямбде функции?

88
28 мая 2021, 17:30

Время жизни переменных, которые передают в область захвата(в квадратные скобки) лямбды-функции по значению.

Не смог придумать нормальный пример. Вымышленный код:

QVector<SomeClass*> objs = initObjs();
for (int i = 0; i < objs.size(); ++i) {
    // SomeClass::signal(QString)
    connect(objs[i], &SomeClass::signal, this, [this, i] (QString msg) { qDebug() << i << msg; });
}

В этом участке кода я хочу от массива объектов выводить сообщения, с индексом объекта. Это должно работать? Пример вывода, который я ожидал бы увидеть:

0 i'm obj with index 0

6 signal from obj[6]

2 some msg

Answer 1

Объекты, переданные по значению в список захвата лямбда-выражения, копируются в результирующий объект-замыкание, и их время жизни совпадает с временем жизни объекта-замыкания.

READ ALSO
задача на симетричное отображений

задача на симетричное отображений

В общемЕсть задача Так же есть вот такой код размещения '*' Число логически в голове крутится версия проще ( с помощью abs()) Но никак не могу продумать...

129
С++ Возврат из функции по значению

С++ Возврат из функции по значению

Я новичок в С++ 11, поэтому возникают подобные вопросы))

113
Использование свойств в С++

Использование свойств в С++

В С++ для атрибутов класса можно задавать свойства, шаблон определения которых -

92
Как обратиться к другому слоту Qt

Как обратиться к другому слоту Qt

Пытаюсь в конструкторе B вызвать слот A::toExit()Как исправить ошибку?

86