これが私のアプリケーションによって課される要件です。私はクラス A を持っています。これは、cFunc という関数ポインタを受け入れます。基本的に A の実装では、cFunc を複数回呼び出します。
cFunc ポインター自体は、アプリケーションに応じて異なる関数を指す必要があります。したがって、アプリケーションごとにcFuncと同じ関数定義を持つクラスを作成しますが、クラスのメンバー関数をこのポインターに割り当てることはできません
class A {
typedef double (*Def_CFunc)(std::vector<double>);
A(Def_CFunc _cFunc) { // Some implementation}
// Other Functions
};
class B { double someFunc(std::vector<double> b); };
class C { double someOtherFunc(std::vector<double> a); };
int main () {
B firstObj;
C secondObj;
// Depending upon the situation, I want to select class B or C
double (*funcPointer)(std::vector<double>) = firstObj.someFunc; // Error in this line of code
A finalObj(funcPointer);
}
では、指定された形式のメンバー関数を持つ任意のクラスを使用してクラス A を初期化できるようにするにはどうすればよいでしょうか?