Можно ли это сделать с помощью лямбда-функций?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Можно ли это сделать с помощью лямбда-функций?

Сообщение Anonymous »

Я занимаюсь разработкой на C# более 15 лет, а теперь начинаю разрабатывать на C++.
Моя проблема в том, что я пытаюсь понять обратный вызов или функцию указатели в C++. Я думаю, что следующий пример показывает, как мне нужно использовать указатель функции в методе MyClass:MyMethod:

Код: Выделить всё

// callback function
int foo(char x) { [...] }

void MyAnotherClass::AnotherMethod(int a, int b, int(*func_ptr)(char))
{
// Compute x using parameters a and b.
char x = [ ... ];

int e = func_ptr(x);
}

void MyClass:MyMethod(int a, int b, int c, int d)
{
MyAnotherClass::AnotherMethod(a, b, &foo);
}
Но вместо функции foo мне нужно использовать foo2:

Код: Выделить всё

int foo2(char x, int c, int d) { [...] }
Параметры c и d — это те же параметры, что и в методе void MyClass:MyMethod(int a, int b, int c, int d).
Один из вариантов — передать эти параметры в метод MyAnotherClass::AnotherMethod, а внутри этого метода передать их сюда int e = func_ptr(x, c, d) ;. Примерно так:

Код: Выделить всё

void MyAnotherClass::AnotherMethod(int a, int b, int c, int d, int(*func_ptr)(char, int, int))
{
// Compute x using parameters a and b.
char x = [ ... ];

int e = func_ptr(x, c, d);
}
Но мне интересно, можно ли не передавать параметры c и d в метод MyAnotherClass::AnotherMethod, но передать их указателю на функцию в MyClass:MyMethod. Возможно, с помощью лямбда-функции.
Возможно ли это?
Я понятия не имею, являются ли лямбда-функции решением.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»