如何使用boost绑定与嵌套在带有引用参数的类中的成员函数?
我尝试在类方法中使用 boost::bind
,该方法又使用引用参数调用另一个类方法:
void some_method() {
for_each( con.begin(), con.end(), boost::bind( &comb_str::dfs, this, _1 ) );
}
void dfs( string& str ) {
...
}
使用此语法,我使用 VC++ 2010 对其进行编译,但它传递了 string
作为副本而不是参考。然后我尝试添加 boost_ref( _1 )
并收到编译器错误:
Error 1 error C2664: 'R boost::_mfi::mf1<R,T,A1>::operator ()<comb_str>(const U &,A1) const' : cannot convert parameter 2 from 'boost::arg<I>' to 'std::basic_string<_Elem,_Traits,_Ax> ' c:\program files\boost\boost_1_44\boost\bind\bind.hpp 313 1
更新
它实际上不需要 boost::ref 就可以工作。我真的很抱歉我的粗心。感谢您花时间阅读。
有什么想法吗?
I tried to use boost::bind
inside a class method, which in turn calls another class method with reference parameter:
void some_method() {
for_each( con.begin(), con.end(), boost::bind( &comb_str::dfs, this, _1 ) );
}
void dfs( string& str ) {
...
}
With this syntax, I got it compiled using VC++ 2010, but it passed string
as a copy instead of reference. Then I tried to add boost_ref( _1 )
and I got compiler error said:
Error 1 error C2664: 'R boost::_mfi::mf1<R,T,A1>::operator ()<comb_str>(const U &,A1) const' : cannot convert parameter 2 from 'boost::arg<I>' to 'std::basic_string<_Elem,_Traits,_Ax> ' c:\program files\boost\boost_1_44\boost\bind\bind.hpp 313 1
Update
It actually worked without the need of boost::ref. I really apologize for being careless. Thanks for all your time reading.
Any idea?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论