当前位置:  开发笔记 > 编程语言 > 正文

lambda函数的返回类型是lambda [] X() - > X,不能转换为X.

如何解决《lambda函数的返回类型是lambda[]X()->X,不能转换为X.》经验,为你挑选了1个好方法。

考虑一个Point带有构造函数的类Point(int _x, int _y, char _ch) :x(_x), y(_y), ch(_ch) {};,尝试将此类与lambda函数一起使用:

Point p = [&]() {return Point(1, 2, '%');};
Point p = [&]() -> Point {return Point(1, 2, '%');};

两者都导致错误:

没有合适的用户定义的转换从"lambda [] Point() - > Point"到"Point"存在

这是什么类型,以及如何使之成为X代替lambda []X ()->X



1> AndyG..:

lambda的类型与其返回类型不同.你想先声明lambda:

auto func = [&]() -> Point {return Point(1, 2, '%');};

然后调用它:

Point p = func();

更重要的是,您不需要捕获列表中的任何内容([&]),因为您没有在周围范围内使用任何变量:

auto func = []() -> Point {return Point(1, 2, '%');};

lambda的类型是一个你无法知道的编译时确定的类型,因此需要auto.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有