c++ - lambda函数中的参数列表类型错误
问题描述
我对 lambda 表达式 C++11 不是很熟悉。我试图简单地从另一个类中调用一个方法,该方法采用一个整数并构造一个 lambda 表达式,但我收到一个关于参数不是正确数据类型的错误。
class A{
int _a;
void f(int a){
_a = a;
}
};
class B{
B(){
A instance = new A();
instance.f(
[&](int input)->int
{
int x = 2;
return x;
});
};
}
解决方案
lambda 实际上只是编写函数的一种紧凑方式。
有问题的 lambda:
[&](int input) -> int
{
int x = 2;
return x;
};
是一个未命名的函数,采用一个int
参数(它不使用)并返回int
. 它还使用引用语义捕获其上下文,它也没有使用它。
如果您想将 lambda 与需要 的函数结合使用int
,则需要调用lambda,可能像这样:
class A
{
public:
void f(int a){
_a = a;
}
private:
int _a;
};
class B
{
public:
B()
{
A instance; // = new A(); <- not C++
auto mylambda =
[](int input) -> int
{
int x = 2;
return x;
};
instance.f( mylambda(3) );
}
};
推荐阅读
- android - OrderByChild() 没有对我的 firebase 数据进行排序
- javascript - 如何通过关键字获得最相关的问题
- python - 如何使用python删除谷歌存储文件夹中的所有文件
- azure - 多租户 - Azure IoT 客户是否应该共享一个中心?
- pandas - Pandas 删除重复项(也是逆序)(Python 3.7)
- ansible - 无法检查保险库状态,获取错误检查密封状态
- ios - 【区别】:静态、动态库和静态、动态框架。+ iOS 中的库和框架
- javascript - ReactJs 中父项下出现多个字段
- xamarin.forms - 无法将 PopupPage 添加到 Visual Studio 中的项目
- python - 如何在 Python 中格式化 txt 文件