異なる数の引数を持つ関数に関数ポインタを割り当てる方法を理解しようとしています。C++:関数の引数の数が可変の関数へのポインタ
私は条件付きのステートメントとしていくつかの異なる関数をとるwhileループを持っているので、同じコードで複数のwhileループを書くのではなく、関数ポインタを持っていたいと思います。すべての関数の形式は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)())
{ ... }
ここでは、関数が異なるシグネチャを持つため、これは明らかに機能しません。それはすべて同様の方法で動作させることは可能ですか?私が見なければならない何かのFunctoidsですか?
引数の数がわからない場合は、その関数ポインタをどのように適用するのか分かりますか? – mfontanini
関数ポインタへの代入構文が無効であることに注意してください。*関数を呼び出し、結果を取得し、その一時記憶領域へのポインタを取得し、事前に宣言した関数ポインタに*を割り当てます。 –
ええ、私はそれがかなり有効な構文ではないことを知っています。それはちょうどアイデアを示す。 – jaho