让我说我有这样的层次结构(这只是一个测试程序。请不要指出任何与内存泄漏相关的东西,析构函数不是虚拟的等):
class I
{
public:
virtual void fun(int n, int n1) = 0;
};
class A : public I
{
public:
void fun(int n, int n1)
{
std::cout<<"A::fun():" <<n<<" and n1:" <<n1<<"\n";
}
};
class B : public I
{
public:
void fun(int n, int n1)
{
std::cout<<"B::fun():" <<n<<" and n1:" <<n1<<"\n";
}
};
int main()
{
std::vector<I*> a;
a.push_back(new A);
a.push_back(new B);
//I want to use std::for_each to call function fun with two arguments.
}
如何调用fun()方法,该方法使用std :: for_each获取两个参数?我想我必须使用std :: mem_fun可能与std :: bind2nd,但我无法弄清楚如何做到这一点。任何线索如何实现这一目标?我没有使用提升。