我有一个抽象仿函数类,它重载了 operator() 和实现它的派生对象。
我有一个函数(另一个类的一部分)试图获取这些仿函数类的数组,并试图将指向成员函数的指针传递给标准算法 for_each(),这里是我的概述做:
编辑:为了清楚起见,我重新清理了它并放了旧的小例子。
class A{
operator()(x param)=0;
operator()(y param)=0;
}
class B: public A{
operator()(x param); //implemented
operator()(y param);
}
...// and other derived classes from A
void ClassXYZ::function(A** aArr, size_t aSize)
{
...//some code here
for(size_t i = 0; i< aSize; i++){
A* x = aArr[i];
for(v.begin(), v.end(), ...//need to pass pointer/functor to right operator() of x here
..//other code
}
我已经尝试了几种方法,但我不知道如何让它工作,我需要使用抽象类型,因为我可以有不同的派生类型,但它们都必须实现相同的 operator() (参数 x)函数。
我只需要 for_each() 函数就可以调用成员函数 operator()(param x)。我有一个不同的函数,它有具体的实现,只需传递一个实例就可以了。我试图在这里实现类似的效果,但不知道我得到了哪些具体类。
我做错了什么?
最佳答案
你想要这样的东西......
std::for_each(
it->second.begin(),
it->second.end(),
std::bind1st(std::mem_fun(&A::operator()),x)
);
关于C++成员函数指针和STL算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1451160/