我正在尝试使用指定的参数对向量中的每个对象调用成员函数,并且我希望调用是多态的。我相信下面显示的函数 vstuff 可以实现这一点。但是可以修改 vstuff 以在不使用 boost::bind 的情况下采用向量<shared_ptr <Base>>?
class Base{
virtual double stuff(double t);
}
//and some derived classes overriding stuff
//then in some code
vector<double> vstuff(double t, vector<Base*> things)
{
vector<double> vals;
vals.resize(things.size());
transform(things.begin(), things.end(), vals.begin(), std::bind2nd(std::mem_fun(&Base::stuff),t));
return vals;
}
我知道 shared_ptr 需要 mem_fn 而不是 mem_fun ,但是我没有成功让 mem_fn 与我需要传入参数 t 的 bind2nd 一起工作,所以我想知道它是否可行..?