두 가지 버전의 C 함수가 속도와 메모리 사용면에서 서로 균형을 이룹니다. 이러한 기능은 여러 프로그램에서 공유되는 .cpp 파일에 있습니다. 두 개의 구현간에 앞뒤로 전환 할 수 있도록 함수 포인터를 사용하여 이러한 변경 내용을 내 프로그램의 모든 파일에 적용합니다.함수 포인터로 함수 구현 간 전환
Combination.h (추출)
long chooseRecursive (int n, int r);
long chooseLookup (int n, int r);
void foo (int n, int r);
static long (*choose)(int, int) = chooseRecursive;
Combination.cpp (추출)
long chooseRecursive (int n, int r) { cerr << "Recursive\n"; }
long chooseLookup (int n, int r) { cerr << "Lookup\n"; }
void foo (int n, int r) { choose(n, r); }
하여 Main.cpp (추출)
int main(int argc, char* argv []) {
choose = chooseLookup;
choose(10, 5);
foo(10, 5);
}
출력은 :
Lookup
Recursive
foo 함수가 chooseRecursive 대신 selectLookup을 사용하지 않는 이유는 무엇입니까? 이 문제를 어떻게 해결할 수 있습니까? 동일한 목표를 달성하는 데 사용할 수있는 더 나은 방법이 있습니까?
도움을 주셔서 감사합니다.
이를 초기화 선언 Combination.h을 변경하는 것입니다
, 당신이 할 수 있습니다
['std :: function'] (http://en.cppreference.com/w/cpp/utility/functional/function)을보십시오. 멤버 함수와 람다 식을 사용할 수 있습니다. –