我正在学习 boost lambda(不是 c++0X lambda,因为我猜它们是不同的)。但是如果唯一的输入参数是调用对象,我无法在线找到调用成员函数(然后输出结果)的方法。我的意思是这条线有效:
for_each(vecCt.begin(), vecCt.end(), cout<<_1<<endl);
如果vecCt是vector
. int
但是如果 vecCt 是一个vector
of MyClass
,它有一个调用函数getName
来返回一个字符串呢?这都不是:
for_each(vecCt.begin(), vecCt.end(), cout<<_1->getName());
也不是这个:
for_each(vecCt.begin(), vecCt.end(), cout<<*_1.getName());
作品。
我在网上搜索,但很多结果建议在调用成员函数时使用绑定。现在我知道了
for_each(vecCt.begin(), vecCt.end(), bind(&MyClass::getName, _1);
使我能够调用getName
传递给 int 的每个对象,但是如何将此输出传递给 cout?这不起作用:
for_each(vecCt.begin(), vecCt.end(), cout<<bind(&MyClass::.getName, _1);