Как захватить члена класса члена класса в лямбда-выраженииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как захватить члена класса члена класса в лямбда-выражении

Сообщение Anonymous »

Я пытаюсь захватить член класса определенного члена класса из функции класса для лямбда.
Чтобы уточнить: у ClassA есть член класса типа ClassB, у которого есть член C (например, указатель). В классе A есть функция, которая присоединяет лямбду к некоторому объекту O. Лямбда должна ссылаться на C (в момент присоединения лямбды к объекту O).
Более конкретный код, который я использую это. Где decide — это еще одна функция класса, принимающая объект ответа. i — моя управляющая переменная цикла for:

Код: Выделить всё

choices.back()->onClick([this, i] {decide(this->content->currentStep->answers[i]); });
Проблема в том, что, насколько я понимаю, я фиксирую this, который является указателем, по значению (и это нормально). Однако, насколько я понимаю, как только тело лямбда-функции выполняется, оно в этот момент разыменовывает content, currentStep и ответы[]. Таким образом, если указатель «содержимого» изменяется между установкой и выполнением лямбды, объект ответа будет отличаться от того, когда я устанавливал лямбду.
Как будет выглядеть синтаксис для захвата фактической ссылки ответить самому себе вместо того, чтобы начинать с this->content->... ?

Подробнее здесь: https://stackoverflow.com/questions/784 ... -in-lambda
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»