C++成员函数指针和STL算法

标签 c++ stl function-pointers pointer-to-member

我有一个抽象仿函数类,它重载了 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/

相关文章:

c++ - qdbusxml2cpp 的最大参数数

c++ - Crypto++ DES 实现和 key 长度

c++ - 为什么包含-fPIC 编译静态库会导致运行时出现段错误?

C++:为什么 std::system ("exit 1") 返回 256?

c++在给定类中创建函数指针 vector ,函数是不同类的成员

c++ - 如何解析istringstream C++?

c++ - 当左值传递给 T&& 时,会发生什么?

C++ 友元类 std::vector

c - 尝试在变量类型中使用 void 指针调用函数

c++ - 如何在 cupsEnumDests 中使用类方法?