我使用向量来存储所有回调,当任务完成时,它们将被调用。
std::vector<boost::function<void (bool)> callbacks;
在函数A中,我在向量中存储传递的参数(即回调函数):
void funcA(const boost::function<void (bool)>& callback) {
callbacks.push_back(callback);
// callbacks[0](true); // if i uncomment this line, callback works properly
}
在功能B中,我完成了任务,我试着打电话给他们:
void funcB() {
for (int i = 0; i < callbacks.size(); i++) {
callbacks[i](true); // this line cause error: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_function_call> >: call to empty boost::function
}
}
回调函数,funcA,funcB是同一个类myClass的成员。我使用lambda(来自另一个类)将参数传递给funcA:
funcA ([](bool success) {
printf("function works properly\n");
})
有谁知道这是什么问题?非常感谢。