我有一些(库API,所以我不能改变的函数原型),这是写了下面的方法功能:现在C++ - 结合功能
void FreeContext(Context c);
,在我执行我的一些时刻有Context* local_context;
变量,这也是不改变。
我希望用boost::bind
与FreeContext
功能,但我需要从本地变量Context*
检索Context
。
如果我写我的代码如下方式,编译器说,这是“非法的间接”:
boost::bind(::FreeContext, *_1);
我设法解决这个问题的方式如下:
template <typename T> T retranslate_parameter(T* t) {
return *t;
}
boost::bind(::FreeContext,
boost::bind(retranslate_parameter<Context>, _1));
但这个解决方案对我来说似乎并不好。任何想法如何解决这个使用像*_1
。 也许写一个小的lambda函数?
你有没有试过Boost.Lambda? – kennytm 2010-10-14 09:40:22