C++中成员函数的函数指针

Jam*_*ieC 6 c++ member-function-pointers function-pointers functor

我需要调用一个需要函数指针的方法,但我真正想传递给它的是一个仿函数.这是我正在尝试做的一个例子:

#include <iostream>
#include "boost/function.hpp"

typedef int (*myAdder)(int);

int adderFunction(int y) { return(2 + y); }

class adderClass {
  public:
    adderClass(int x) : _x(x) {}  
    int operator() (int y) { return(_x + y); }

  private:
    int _x;
};

void printer(myAdder h, int y) {
  std::cout << h(y) << std::endl;
}

int main() {
  myAdder f = adderFunction;

  adderClass *ac = new adderClass(2);
  boost::function1<int, int> g =
    std::bind1st(std::mem_fun(&adderClass::operator()), ac);

  std::cout << f(1) << std::endl;
  std::cout << g(2) << std::endl;
  printer(f, 3);
  printer(g, 4); // Is there a way to get this to work?
}
Run Code Online (Sandbox Code Playgroud)

我无法找到一种方法来获得最后一行,打印机(g,4),以进行编译.有没有办法让这个工作?我控制的唯一事情是方法"main"和类"adderClass".

sho*_*osh 0

像这样:

template<typename AdderT>
void printer(AdderT h, int y) {
  std::cout << h(y) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

另外,您不需要boost::function. 你可以这样做:

  adderClass ac(2);
  std::cout << f(1) << std::endl;
  std::cout << ac(2) << std::endl;
  printer(f, 3);
  printer(ac, 4);
Run Code Online (Sandbox Code Playgroud)