boost :: bind를 사용하고 싶습니다. (필자의 문제에 대한 올바른 해결책인지는 확실하지 않습니다.) 하나의 함수에 래퍼를 생성하려면 랩퍼는 하나의 인수 만 취하고 다른 하나는 일정한 값으로 고정합니다.boost :: bind를 사용하여 함수 래퍼를 만드는 방법
typedef boost::function<double (double)> callback;
내 아이디어와 함수 래퍼를 만드는 것이 었습니다 : 내 기능 내 코드에서
double f(double a, double b)
{
return a/b;
}
또는
double g(double b)
{
return 2*b; // b+b?
}
처럼 하나 개의 인수를 함수에 대한 형식 정의를 보면 이 :
callback cb;
cb = boost::bind(f, _1, 2)(x);
는 인수 전달 래핑 기능 사용하는 I 제 3 함수를 호출 할 수 있도록 :
double use(callback cb, double x, double y)
{
return cb(x0) - y0;
}
를 I는 하나 개 또는 두 개의 인자를 약 30 기능을 가지고, 상기 제 1 또는 제 2 상수이어야한다. 이 상수는 use()
으로 알려져 있지 않지만 use
에 구현 된 알고리즘은 모든 함수에서 작동합니다. 내 코드를 컴파일 할 때
, 나는 선 cb = boost::bind(f, _1, 2)(x);
에 대한 오류를 얻을 : 나는 cout << boost::bind(f, _1, 2)(x);
같이 직접 바인드를 사용하려고하면
'* f' cannot be used as a function
, 나는 오류가 발생하지 않습니다.
내가 여기서 잘못 했습니까?
'boost :: bind' 문서에있는 모든 예제가 그것을 수행하기 때문에'(x)'를 추가했습니다. 이제는 이것을 지적한 것처럼 분실 된 인자가'use()'로 채워지고 바인드가 끝났을 때 알려지지 않았기 때문에 명확 해 보인다. 이제 작동합니다. 고마워요! – Christoph