我有一个抽象的函数类,重载了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)。我有一个不同的函数,它具有具体实现并简单地传递这些实例,因此它可以正常工作。我试图在这里实现类似的效果,但是没有知道我得到了哪些具体类。
我做错了什么?
vector
而不是指向指针的指针? - GManNickGstatic_cast<>
建议(pFunc
不是一个类型),而且bind1st()
需要一个对象的指针,而不是一个对象。尝试使用for_each(it->second.begin(), it->second.end(), std::bind1st(std::mem_fun(pFunc), pf));
。 - j_random_hacker