C++의 다음과 같은 간단한 코드에서 f (i) 함수를 사용하는 'count_out'이라는 간단한 프로 시저를 소개합니다. 이 함수는 int 인수를 사용하여 int를 반환하고 10 개의 연속 점에서이 함수를 평가하고 결과를 인쇄합니다.일부 (모든 것이 아닌) 인수가 지정되어있는 동안 함수에 대한 포인터 전달
이제 'count_out'은 int를 취하고 int를 반환하는 'multiplyby2'와 같은 함수에서 잘 작동합니다. 그러나 'count_out'프로 시저에 'add'와 같은 함수를 제공하고 싶습니다.이 함수는 두 개의 int를 취합니다. 그러나 'add'가 'int f (int)'함수처럼 보이도록하려면 두 번째 인수 (b)를 예를 들어로 지정합니다. 10. 하지만 어떻게 C++이 이것을 이해할 수 있을까요? 두 번째 인수가 지정된 'add'를 단일 int를 사용하고 int를 반환하는 함수로 사용하여 'count_out'에 피드를 제공 할 수 있습니까?
// C++ code snippet:
#include <iostream>
using namespace std ;
int multiplyby2 (int i) {
return 2 * i ;
}
int add (int a, int b) {
return (a + b) ;
}
void count_out(int (*f) (int)){
for(int i=1; i<=10; i++) cout << f(i) << endl ;
}
void main() {
count_out (&multiplyby2) ; // works fine.
count_out (&add (,10)) ; // produces compilation errors!
//note that 'add (int a , 10)' would be a function which returns a + 10 .
}
['std :: bind'] (http://en.cppreference.com/w/cpp/utility/functional/bind)를보십시오. – juanchopanza