2014-12-05 142 views
-2

给定一个载体,诸如:如何使用std :: mem_fn在矢量内的所有对象上调用方法?

vector<Something*> a; 

我想调用函数whoAmI()Something对象。我想将返回值(string)附加到向量中的所有对象的ostream

这里是我的代码:

std::transform(a.begin(), a.end(), std::ostream_iterator<std::string>(outstream_), std::mem_fn(&Something::whoAmI))); 

编辑:我的不好,忘了参考。

回答

3

mem_fn,your code works的参数中添加缺少的&之后。

但是,为什么在这里首先使用transform?正确的解决您的问题是

for (auto s : a) 
    outstream_ << s->WhoAmI(); 
+0

@JoachimPileborg是的,正确的。这是从十分钟前的剩余时间,我仍然认为矢量包含实际的对象(而不是指向它们的指针)。 – Columbo 2014-12-05 19:44:38