c++11 有返回值的回调函数
时间: 2024-04-19 13:23:00 浏览: 91
C++11引入了lambda表达式,它可以用于创建匿名函数对象。通过lambda表达式,我们可以方便地定义有返回值的回调函数。
下面是一个示例代码,展示了如何在C++11中定义有返回值的回调函数:
```cpp
#include <iostream>
#include <functional>
// 定义回调函数类型
using CallbackFunc = std::function<int(int)>;
// 接受回调函数作为参数的函数
void processCallback(int num, CallbackFunc callback) {
int result = callback(num);
std::cout << "Result: " << result << std::endl;
}
int main() {
// 使用lambda表达式定义回调函数
CallbackFunc callback = [](int num) -> int {
return num * 2;
};
// 调用函数,并传入回调函数
processCallback(5, callback);
return 0;
}
```
在上述代码中,我们首先使用`using`关键字定义了一个类型别名`CallbackFunc`,它表示一个接受一个整数参数并返回整数的函数指针类型。
然后,我们定义了一个名为`processCallback`的函数,它接受一个整数参数和一个回调函数作为参数。在函数内部,我们调用了回调函数,并将其返回值打印出来。
在`main`函数中,我们使用lambda表达式定义了一个回调函数,并将其赋值给`callback`变量。然后,我们调用`processCallback`函数,并传入回调函数作为参数。
运行上述代码,输出结果为:
```
Result: 10
```
这表明回调函数成功被调用,并返回了正确的结果。
阅读全文