함수 포인터를 예상하는 메서드를 호출해야하지만 실제로 전달할 함수는 functor입니다. 여기에 내가 할 노력하고있어의 예 : 나는 마지막 줄을 얻을 수있는 방법을 찾을 수 없어C++의 멤버 함수에 대한 함수 포인터
#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?
}
는, 프린터 (g, 4), 컴파일합니다. 이 방법을 사용할 수 있습니까? 내 제어 할 수있는 유일한 방법은 메서드 "main"과 클래스 "adderClass"입니다. 그래서 같은
그게 효과가 있지만, (언급하는 것을 잊어 버렸습니다.) "printer"메소드는 변경할 수 없습니다. – JamieC
내 컨트롤에있는 모든 것은 "main"메서드와 "adderClass"클래스입니다. – JamieC