问题描述
我的一个类的接口中需要传入一个回调函数,我想在这个回调函数中捕获外部变量,
但是这个类是我自己写的库,而这个外部变量并不是这个接口必要的参数,所以不能直接把外部变量传入接口中,
所以我想这个回调函数传入个lambda表达式,在lambda表达式中捕获外部变量,
请问在函数的参数列表中怎么声明这个回调函数的类型?
Lambda表达式类型的实验
如果我使用auto,当我把鼠标移到变量名上面时,看不出变量的类型:

它显示的类型是 (lambda at ***.cpp:353:14)
如果使用声明函数指针的方式声明lambda表达式,并不会报错
int (*callback)() = [] () { return 0; };
当我在Lambda表达式中捕获外部变量时就会报错:
int index = 0;
int (*callback)() = [index] () { return index; };
报错信息:
mainwindow.cpp:353:11: error: no viable conversion from '(lambda at ***/mainwindow.cpp:353:18)' to 'int (*)()'

可是我在回调函数中要使用外部变量。
问题
请问在函数参数列表中如何声明该回调函数的类型?
或者有什么其他的解决方式?