1

私は2つのファンクターを持っています:

class SFunctor {
public:
    SFunctor(double a) { _a = a; }
    double operator() (double t) { return _a * sin(t); }
private:
    double _a;
};

class CFunctor {
public:
    CFunctor(double b) { _b = b; }
    double operator() (double t) { return _b * cos(t); }
private:
    double _b;
};

これらの関数のいずれかを別の関数に渡したい:

double squarer(double x, ??______?? func) {
      double y = func(x);
      return y * y;
}

私のメインプログラムでは、次のような呼び出しを行いたいです:

CFunctor sine(2.);
SFunctor cosine(4.);
double x= 0.5;
double s = squarer(x, sine);
double c = squarer(x, cosine); 

関数ファンドを指定するにはどうすればよいですか??の代わりにその前にあるものです。_ ?? ?

4

2 に答える 2

4

テンプレートで簡単にできます

template <class F>
double squarer(double x, F& func) {
      double y = func(x);
      return y * y;
}
于 2013-04-25T16:52:36.913 に答える