C++ lambda函数中的参数列表类型错误
我不太熟悉lambda表达式C++11。我试图简单地从另一个类调用一个方法,获取一个整数并构造一个lambda表达式,但是我收到一个错误,关于参数不是正确的数据类型C++ lambda函数中的参数列表类型错误,c++,c++11,lambda,C++,C++11,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
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) );
}
};
你想做什么?我无法理解您试图在这段代码中实现什么。如果您试图调用的函数采用整数,为什么要使用lambda;不是有效的C++代码错误告诉你函数A::F期望传递一个int,但是你传递它一个lambda,它不能被转换成int。@非HyyyLood谁知道,也许有一个定义A *潜伏在某处…