ошибка типа списка параметров в лямбда-функции - PullRequest
0 голосов
/ 03 октября 2018

Я не очень знаком с лямбда-выражениями C ++ 11.Я пытался просто вызвать метод из другого класса, взяв целое число и создав лямбда-выражение, но я получаю сообщение об ошибке, что параметр не является правильным типом данных.

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 голосов
/ 04 октября 2018

Лямбда - это на самом деле просто компактный способ написания функции.

Лямбда, о которой идет речь:

[&](int input) -> int
{
    int x = 2;
    return x;
};

- безымянная функция, принимающая один параметр int (то естьне использует) и возвращает int.Он также захватывает свой контекст с помощью ссылочной семантики, чего он также не использует.

Если вы хотите использовать лямбду в сочетании с функцией, которая ожидает int, вам нужно вызвать лямбда, может быть так:

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) );
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...