用c ++包装函数

时间:2015-08-25 20:51:58

标签: c++

我有一个函数executor,它使用函数指针和一般函数origin调用,我不想通过不同的参数传递abexecutor。怎么办呢?

这是我到目前为止所尝试的内容:

#include <iostream>

void executor(float (*f)(float)) {
  float x = 1.;
  std::cout << (*f)(x) << std::endl;
}

float original(float x,float a,float b) {
  return a*x + b;
}

//// Works as expected

float a = 1;
float b = 2;

float wrapped(float x) {
  return original(x,a,b);
}

void call_executor_global() {
  executor(wrapped);
}

//// FIRST TRY

// void call_executor_func(float a, float b) {

//   float wrapped(float x) {
//     return original(x,a,b);
//   }
//   executor(wrapped);
// }

//// SECOND TRY

// struct Wrapper {
//   float a;
//   float b;

//   float func(float x) {
//     return original(x,a,b);
//   }
// };

// void call_executor_struct(float a, float b) {

//   Wrapper wrapped;
//   wrapped.a = a;
//   wrapped.b = b;

//   executor(wrapped.func);

// }


int main()
{
  call_executor_global();
  // call_executor_func(1,2);
  // call_executor_struct(1,2);
}

0 个答案:

没有答案