首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

boost:bind不能访问栈变量,对么?该如何解决

2012-04-26 
boost::bind不能访问栈变量,对么?C++11的lambda可以访问栈变量形成闭包。但是boost::bind似乎是不能访问栈

boost::bind不能访问栈变量,对么?
C++11的lambda可以访问栈变量形成闭包。但是boost::bind似乎是不能访问栈变量的,如下:

C/C++ code
class s{   void f(int i)...};int main(void){   int k;   for_each(v.begin(),v.end(),boost::bind(&s::f,_1));...

问题是f函数的调用要用到参数int k
boost::bind能做到么?

我的工程是vc2005的,不能使用c++11的语法,用boost::bind能做到么?(不用boost::lambda的情况下)


[解决办法]
C/C++ code
for_each( v.begin(), v.end(), std::bind( &s::f , _1 , k ) );
[解决办法]
探讨

引用:

C/C++ code
for_each( v.begin(), v.end(), std::bind( &s::f , _1 , k ) );


如果f有多个输入变量,那么bind的写法就是
for_each( v.begin(), v.end(), std::bind( &s::f , _1 , k, l, m, n...)
……

热点排行