我有一个抽象函子类,它重载了 operator() 和实现它的派生对象。
我有一个函数(另一个类的一部分),它试图获取这些仿函数类的数组,并尝试将指向成员函数的指针传递给 std 算法 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()(param x ) 功能。
我只需要 for_each() 函数就可以调用成员函数 operator()(param x)。我有一个不同的函数,它有具体的实现,只需传递一个实例就可以了。我试图在这里达到类似的效果,但不知道我得到了什么具体的课程。
我究竟做错了什么?