澄清函数指针

Hem*_*ava -1 c++ function-pointers function

int function_a () {
   int ret_a = call_a;
   int ret_b = call_b;
}
Run Code Online (Sandbox Code Playgroud)

call_a和call_b的定义是这样的:

int call_a() {
  // Some 10 lines
  call_c();
}

int call_b() {
  // Same 10 lines
  call_d();
}
Run Code Online (Sandbox Code Playgroud)

函数call_a和call_b之间的区别仅在于它们调用不同的函数.我开始知道函数指针是这种情况下的最佳方法.创建一个函数(只有call_a,而不是call_a和call_b),并将函数指针传递给call_c和call_d.我们怎样才能实现它?

希望我很清楚,让你明白.

Lig*_*ica 5

我们怎样才能实现它?

void call_c();
void call_d();

int call_a(void (*c)()) {
  // Some 10 lines
  c();
}

int function_a () {
   int ret_a = call_a(&call_c);
   int ret_b = call_a(&call_d);
}
Run Code Online (Sandbox Code Playgroud)

我开始知道函数指针是这种情况下的最佳方法

有时,事实并非如此.根据您的真实用例,使用lambdas可能更有意义!

template <typename Callable>
int call_a(Callable c) {
  // Some 10 lines
  c();
}

int function_a () {
   int ret_a = call_a([]() { call_c(); });
   int ret_b = call_a([]() { call_d(); });
}
Run Code Online (Sandbox Code Playgroud)