Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
136 / 49 / 5
Регистрация: 10.01.2017
Сообщений: 1,894
1

Как захватить объект класса в лямбду ?

07.07.2023, 20:53. Показов 555. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class test_class
{
 
public:
 
 
    void call_callback(void (*user_callback)(int int_), test_class* test_class_p)
    {
        user_callback(int_, &this);
        int_++;
    }
 
    void method_class()
    {
        std::cout << "method_class";
    }
 
 
private:
 
    int int_ = 555;
};
 
 
 
 
int main()
{
 
    test_class test_class_;
 
    test_class_.call_callback([&test_class_](int int_, &test_class_)
        {   
            std::cout << int_ << std::endl;
 
                      test_class_.   // как внутри колбека вызвать другие методы класса "test_class_" ?
        });
 
}

Как вызвать методы класс "test_class_" внутри колбека ? Так компилятор ругается.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.07.2023, 20:53
Ответы с готовыми решениями:

Как связать сигнал одного класса со слотом другого класса, содержащего указатель на объект этого класса?
Подскажите, пожалуйста, как связать сигнал одного класса со слотом другого класса, содержащего...

Объект одного класса должен принять объект другого не понимаю как
Задание: Написать класс Person, Auto. Класс Person должен принимать объект класса Auto. Методы...

Как увидеть объект Session и объект Server из модуля класса?
В модуле класса пишу: 'Provider=Microsoft.Jet.OLEDB.4.0;' &amp; _ 'Data Source=' &amp;...

Создать обЪект класса , у которого в параметрах конструктора объект этого же класса
Вот код: TOgmGraphicsClass = class of TOgmGraphicsBlock; TOgmGraphicsBlock =...

Можно ли создать объект класса с таким же именем как у самого класса?
Можно ли создать объект класса с таким же именем как у самого класса? Ну или как то обойти эту...

2
Вездепух
Эксперт CЭксперт С++
12783 / 6662 / 1793
Регистрация: 18.10.2014
Сообщений: 16,849
07.07.2023, 21:28 2
Цитата Сообщение от Optimus11 Посмотреть сообщение
Как вызвать методы класс "test_class_" внутри колбека ?
Никак. У вас параметр имеет тип void (*user_callback)(int int_) - указатель на функцию. Сюда никак нельзя передать лямбду с захватом.

К указателям на функцию можно привести только лямбду без захвата. То есть в лямбде должно быть строго [].
1
Модератор
5102 / 3329 / 535
Регистрация: 01.06.2013
Сообщений: 6,956
Записей в блоге: 9
07.07.2023, 21:41 3
Лучший ответ Сообщение было отмечено Optimus11 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <functional>
 
class test_class
{
public:
    using CallbackFn = std::function<void(int)>;    
    void call_callback(CallbackFn user_callback)
    {
        user_callback(int_);
        int_++;
    }
 
    void method_class()
    {
        std::cout << "method_class"  << std::endl;
    }
 
private:
 
    int int_ = 555;
};
 
 
int main()
{
    test_class test_class_;
 
    test_class_.call_callback([&test_class_](int int_)
        {   
            std::cout << int_ << std::endl;
            test_class_.method_class();
        });
    return 0;
}
1
07.07.2023, 21:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2023, 21:41
Помогаю со студенческими работами здесь

Как сложить объект базового класса с объектом производного(наследуемого класса)
Как умножить объект базового класса с объектом производного(наследуемого класса): ozenka - объект...

Создать объект класса Card как поле для класса Menu
Не могу создать объект класса Card как поле для класса Menu. Пробывал создавать объект класса Card...

Как отправить объект одного класса в метод другого класса
Начал изучать классы в c++ и в качестве практики решил написать программу которая упрощено...

как узнать,является данный объект класса А1 наследником класса А2
Всем привет)есть классы S, A1, A2, B1, B2. Иерархия наследования следующая S - Является...

Как асинхронно через объект класса вызвать функцию класса?
Есть класс с именем Script с функцией run_task Я хочу вызвать функцию класса асинхронно несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru