我必须为旧的 c 库创建一个 c++ 包装器。
在一个类方法中,我必须调用 ac 函数,该函数还带有一个函数指针(它是一个事件处理程序,该函数采用一个在事件发生时触发的函数)。
一个简单的例子是这样的:
void myclass::add_handler(std::function<void()> handler, otherstuff...)
{
/*
* Many things.
*/
type_of_function_pointer_accepted_by_old_c_library_add_handler nameofvariable =
[handler](same_arguments_as_in_definition_of_the_old_c_function_pointer_accepted)
{
/*
* Many other things with other stuff to be done before the
* handler but always only when fired and not when myclass::add_handler is called.
*/
handler();
};
old_c_library_add_handler(nameofvariable);
/*
* Last things.
*/
}
据我所知,编译器抱怨我无法将带有捕获的 lambda 分配给旧的 c 函数指针。问题是:我该怎么做才能解决?