-1

C ++でvoid型の関数があるとしましょう

例えば:

void fun1(); 
void fun2();
void fun3();

これらの関数を配列にプッシュするにはどうすればよいですか? 例えば:

array[0] = fun1();
array[1] = fun2();
array[2] = fun3();
4

4 に答える 4

8

C で関数ポインターを使用します。

void (*array[2])();
array[0] = fun1;
array[1] = fun2;

またはstd::functionC++ の場合:

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);
于 2013-05-30T19:23:40.700 に答える
2

インターフェイス パターンを使用しない理由。

すなわち

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();

関数を呼び出すには

于 2013-05-30T19:29:29.230 に答える