我有以下设计问题,并且正在寻找最优雅、甚至更重要的最有效的解决方案,因为这个问题来自性能是一个问题的环境。简单地说,我有一个类“Function_processor”,它对实函数进行一些计算(例如计算实函数的根),我还有另一个类“A”,它具有不同的此类函数,需要使用 Function_processor 对它们执行计算.
Function_processor 应该尽可能通用(例如,不为各种不同的对象提供接口),而只是坚持自己的任务(对任何函数进行计算)。
#include "function_processor.h"
class A {
double a;
public:
A(double a) : a(a) {}
double function1(double x) {
return a*x;
}
double function2(double x){
return a*x*x;
}
double calculate_sth() {
Function_processor function_processor(3*a+1, 7);
return function_processor.do_sth(&function1);
}
};
class Function_processor {
double p1, p2;
public:
Function_processor(double parameter1, double parameter2);
double do_sth(double (*function)(double));
double do_sth_else(double (*function)(double));
};
显然我不能像下面的例子那样传递成员函数 A::function1/2 (我知道,但这大致是我认为可读的代码)。我也不能使 function1/2 成为静态的,因为它们使用了非静态成员 a。我确信我可以使用诸如 std::bind 或模板之类的东西(尽管我对这些东西几乎没有任何经验),但我最关心的是我会得到的性能。
什么是我的问题的最佳(良好的代码和快速的性能)解决方案?
谢谢你的帮助 !