引数の数が異なる関数に関数ポインターを割り当てる方法を見つけようとしています。
条件ステートメントとしていくつかの異なる関数を受け取るwhileループがあるので、まったく同じコードを含む複数のwhileループを作成する代わりに、関数ポインターを使用して1つにしたいです。すべての関数は形式ですbool f(...)
。いくつかのコードは私が何を意味するかを最もよく説明すると思います:
int a, b, c, d;
MyClass* my_class;
typedef bool (MyClass::*my_fun_t)();
my_fun_t my_fun;
if (condition1)
my_fun = &MyClass::function_one();
else if (condition2)
my_fun = &MyClass::function_two(a, b);
else if (condition3)
my_fun = &MyClass::function_three(a, b, c);
else if (condition4)
my_fun = &MyClass::function_four(a, b, c, d);
while ((my_class->*my_fun)())
{ ... }
関数のシグネチャが異なるため、これは明らかに機能しません。同様の方法で動作させることは可能ですか?ファンクトイドは私が見なければならないものですか?