进行表单和onload时代码中的Lambda错误 [英] Lambda error in code when making form and onload

查看:45
本文介绍了进行表单和onload时代码中的Lambda错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到此错误:

IntelliSense:不存在从"lambda [] void(Form :: Form * arg1)-> void"到"Form :: OnLoad"的合适转换函数c:\ users \ topkek \ desktop \ project \ test \ tset \测试\ main.cpp

IntelliSense: no suitable conversion function from "lambda []void (Form::Form *arg1)->void" to "Form::OnLoad" exists 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

Error 8 error C2440: 'type cast' : cannot convert from '`anonymous-namespace'::' to '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 { /*...*/ })

那是一个奇怪的lambda:)

That is one weird lambda :)

我不确定您到底想做什么,但是您不需要lambda:

I'm not sure what exactly you are trying to do, but you don't need a lambda for this:

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

如果您想要lambda,请删除开头:

If you want a lambda, drop the start:

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

这篇关于进行表单和onload时代码中的Lambda错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆