C ++でvoid型の関数があるとしましょう
例えば:
void fun1();
void fun2();
void fun3();
これらの関数を配列にプッシュするにはどうすればよいですか? 例えば:
array[0] = fun1();
array[1] = fun2();
array[2] = fun3();
C で関数ポインターを使用します。
void (*array[2])();
array[0] = fun1;
array[1] = fun2;
またはstd::function
C++ の場合:
std::function<void(void)> fn1 = fun1;
std::function<void(void)> fn2 = fun2;
std::vector<std::function<void(void)> > v;
v.push_back(fn1);
v.push_back(fn2);
インターフェイス パターンを使用しない理由。
すなわち
class CallBackInterface {
public:
virtual void CallBack();
};
class CallBack1 : public CallBackInterface{
public:
virtual void CallBack();
private:
int someData;
};
...など
次に、基本型を使用して配列を作成します
CallBackInterface arr[] =
{
CallBack1(),
callBack2(5, "Hello"),
...
};
各オブジェクトは、必要なペイロードを持ち運ぶことができます-その後、次のことができます
arr[1].CallBack();
関数を呼び出すには