Лямбда-ошибка в коде при создании формы и загрузке

Я получаю эту ошибку:

IntelliSense: нет подходящей функции преобразования из «lambda [] void (Form :: Form * arg1) -> void» в «Form :: OnLoad» существует c: \ users \ topkek \ desktop \ project \ test \ tset \ test \ main .cpp

Реальная ошибка:

Ошибка 8, ошибка C2440: «приведение типа»: невозможно преобразовать из «пространства анонимных имен» :: «Form :: OnLoad» c: \ users \ topkek \ desktop \ project \ test \ tset \ tes‌ t \ main. CPP

Это код:

new Form::Form("TEST_MAIN", "Test main", (Form::OnLoad)[](Form::Form* arg1)->void {

form.h:

typedef void(*OnLoad)(Form*);
Form(const char* WindowClass, const char* Title, OnLoad Func = NULL);

Form.cpp:

Form::Form(const char* szWindowClass, const char* Title, OnLoad Func) {

0

Решение

(Form::OnLoad)[](Form::Form* arg1)->void { /*...*/ })

Это одна странная лямбда 🙂

Я не уверен, что именно вы пытаетесь сделать, но вам не нужна лямбда для этого:

auto f = new Form::Form("TEST_MAIN", "Test main", &Form::OnLoad);
^^^^^^^^^^^^^
Address of function

Если вы хотите лямбду, бросьте старт:

auto f = new Form::Form("TEST_MAIN", "Test main", [](Form::Form* arg1)->void {});
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector