如何使用boost绑定与嵌套在带有引用参数的类中的成员函数?

发布于 2024-10-12 23:53:37 字数 754 浏览 6 评论 0原文

我尝试在类方法中使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文