Я получаю эту ошибку:
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) {
(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 {});
Других решений пока нет …