Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ lambda函数中的参数列表类型错误_C++_C++11_Lambda - Fatal编程技术网

C++ 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

我不太熟悉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) );
    }
};

你想做什么?我无法理解您试图在这段代码中实现什么。如果您试图调用的函数采用整数,为什么要使用lambda;不是有效的C++代码错误告诉你函数A::F期望传递一个int,但是你传递它一个lambda,它不能被转换成int。@非HyyyLood谁知道,也许有一个定义A *潜伏在某处…