Lambda函数中的参数列表类型错误

时间:2018-10-03 19:37:21

标签: 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 = 2;
      return x;
     });

  };

}

1 个答案:

答案 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) );
    }
};