免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5106 | 回复: 6
打印 上一主题 下一主题

[C++] boost bind 返回值 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-19 12:01 |只看该作者 |倒序浏览
  1. class Person
  2. {
  3. public:
  4.     Person(const string& _name):name(_name){}
  5.     string Name()
  6.     {   
  7.         return name;
  8.     }   
  9.     string name;
  10. };
  11. int main()
  12. {
  13.     Person p1("hello");
  14.     boost::bind(&Person::Name, _1)(p1);
  15.     return 0;
  16. }
复制代码
对于这样的 bind 我不知道 该 怎么处理它的返回值, 如果是 boost::bind(&Person::Name,p1)  返回值可以是 boost::function<string()> fun = boost::bind(&Person::Name,p1)
可是对于这个 boost::bind(&Person::Name, _1) 我不知道 该 怎么存储它的返回值,
望 高手解答

论坛徽章:
0
2 [报告]
发表于 2013-11-19 15:32 |只看该作者
没看懂……你确定boost::bind(&Person::Name, _1)(p1);这句话可以编译通过么?可以正常运行么?
都没有传递函数对象的指针……应该是这样吧 boost::bind(&Person::Name, &p1, _1)("我是谁");然后这句话实际上已经开始调用函数了,返回值就是string。
boost::bind(&Person::Name, &p1, _1);这个才是你要的仿函数。

论坛徽章:
0
3 [报告]
发表于 2013-11-19 16:35 |只看该作者
当然可以的回复 2# luciker1988


   

论坛徽章:
0
4 [报告]
发表于 2013-11-19 18:59 |只看该作者
回复 1# zwjzwj19891228

刚试了下 返回值是这个
boost::function<std::string (Person&)> F = boost::bind(&Person::Name, _1);
这种写法应该是绑定了一个引用。
   

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2013-11-20 10:58 |只看该作者
成员函数,第一个参数你都没bind成对象,怎么可能调的起来。

论坛徽章:
0
6 [报告]
发表于 2013-11-20 19:10 |只看该作者
我上面 都说了 可以,肯定是可以的,这是 和 stl算法的 结合使用,你试一下 再说呀,无语回复 5# linux_c_py_php


   

论坛徽章:
0
7 [报告]
发表于 2013-11-20 19:14 |只看该作者
可以,可以,确实 可以回复 4# luciker1988


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP