我对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;
});
};
}
答案 0 :(得分:0)
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) );
}
};