假设我有一个对象向量。对于向量中的每个元素,我想通过一个成员调用一个函数。代码可以如下图所示。
class CMyClass
{
public:
void g();
};
class CAnotherClass
{
public:
void f();
CMyClass m_object;
};
std::vector<CAnotherClass> vec;
// This is easy. What about m_object->g()?
std::for_each(vec.begin(), vec.end(), std::mem_fn(&CAnotherClass::f));
调用f()
每个对象就像上面显示的一样简单。如果我想调用m_object->g()
每个对象怎么办?希望我不想更改的接口CAnotherClass
添加一个虚拟函数只是为了调用m_object->g()
.
是否有任何 STL/boost 方法可以在不自己编写循环的情况下做到这一点?