C++中lambda表达式调用类中的函数
时间: 2023-12-01 11:04:34 浏览: 88
在C语言中,没有lambda表达式的概念。但是,你可以使用函数指针来实现类似于lambda表达式的功能。下面是一个示例代码,演示如何使用函数指针调用类中的函数:
```c
#include <stdio.h>
// 定义一个类
typedef struct {
int x;
int y;
void (*print)(int, int);
} Point;
// 类中的函数
void printPoint(int x, int y) {
printf("(%d, %d)\n", x, y);
}
// 定义一个函数,接收一个函数指针作为参数
void callFunction(void (*func)(int, int), int x, int y) {
func(x, y);
}
int main() {
// 创建一个对象
Point p = {10, 20, printPoint};
// 调用类中的函数
p.print(p.x, p.y);
// 使用函数指针调用类中的函数
callFunction(p.print, p.x, p.y);
return 0;
}
```
代码中,我们首先定义了一个Point类,包含两个成员变量x和y,以及一个print函数指针。print函数指针指向一个函数,用于打印Point对象的坐标。
接着,我们定义了一个函数callFunction,接收一个函数指针和两个参数。该函数用于调用传入的函数指针,并将两个参数传递给该函数。
在main函数中,我们创建了一个Point对象p,并调用了其print函数指针,输出对象的坐标。接着,我们使用函数指针调用了p的print函数,输出了同样的结果。
需要注意的是,函数指针的类型必须与类中的函数指针类型相同。在本例中,print函数指针的类型为void (*)(int, int),即接收两个int参数并返回void。因此,在调用callFunction函数时,传入的函数指针参数的类型也必须为void (*)(int, int)。
阅读全文