场景
多个类对象的多个操作需要回调.
方法
1. 定义CallbackAction, 保存类对象及此类相关操作
template <class T>
class ActionCallback
{
public:
typedef void(T::*FUN)(Output_Type tuple);
Callback(T* obj, FUN method)
{
class_ = obj;
method_ = method;
};
virtual void callback(Output_Type tuple)
{
(class_->*method_)(tuple);
delet this;
};
private:
T *class_;
FUN method_;
};
2. 使用方式
2.1 创建CallbackAction
ClassA::Function1
{
async->call(input_para, new CallbackAction<ClassA>(this, &ClassA::Function1Callback)
}
ClassA::FunctionX
{
async->call(input_para, new CallbackAction<ClassA>(this, &ClassA::FunctionXCallback)
}
注:其中call方法要记住新创建的CallbackAction对象,以便2.2用于回调,回调完CallbackAction会自动被释放。
2.2 异步调用结束回调
Async->action->callback(tuple)
注: 回调时,此对ClassA对象必须仍然存在