假设我有一个 boost::function ,带有一个名为 type 的任意签名CallbackType
。
- 是否可以使用
boost::bind
组合一个与 CallbackType 具有相同参数但连续调用两个函子的函数?
我对任何潜在的解决方案持开放态度,但这里有一个......
magic
...使用一些模板的假设示例:
Template<typename CallbackType>
class MyClass
{
public:
CallbackType doBoth;
MyClass( CallbackType callback )
{
doBoth = bind( magic<CallbackType>,
protect( bind(&MyClass::alert, this) ),
protect( callback ) );
}
void alert()
{
cout << "It has been called\n";
}
};
void doIt( int a, int b, int c)
{
cout << "Doing it!" << a << b << c << "\n";
}
int main()
{
typedef boost::function<void (int, int, int)> CallbackType;
MyClass<CallbackType> object( boost::bind(doIt) );
object.doBoth();
return 0;
}