【发布时间】:2014-10-23 11:52:29
【问题描述】:
我正在学习 boost lambda(不是 c++0X lambda,因为我猜它们是不同的)。但是如果唯一的输入参数是调用对象,我无法在线找到调用成员函数(然后输出结果)的方法。我的意思是这条线有效:
for_each(vecCt.begin(), vecCt.end(), cout<<_1<<endl);
如果 vecCt 是 vector 的 int。但是,如果 vecCt 是 MyClass 的 vector,它有一个名为 getName 的函数来返回一个字符串怎么办?这都不是:
for_each(vecCt.begin(), vecCt.end(), cout<<_1->getName());
也不是这个:
for_each(vecCt.begin(), vecCt.end(), cout<<*_1.getName());
有效。
我在网上搜索,但很多结果建议在调用成员函数时使用bind。现在我知道了
for_each(vecCt.begin(), vecCt.end(), bind(&MyClass::getName, _1);
使我能够在每个传递 int 的对象上调用 getName,但是如何将此输出传递给 cout?这不起作用:
for_each(vecCt.begin(), vecCt.end(), cout<<bind(&MyClass::.getName, _1);
【问题讨论】:
-
定义不起作用。
-
@doctorlove 我假设你的意思是最后一行?它无法编译,错误是“'std::cout
-
是的-我认为您只需要调用该函数... bind 是可调用的。添加
() -
@doctorlove 我在
cout<<之后添加了(,在;之前添加了)。编译错误和我描述的一样。
标签: c++ boost boost-lambda