0

クラス ClassA に C++ 関数ポインタがあります。

void (ClassA::*funcPntr1)(void);

関数を指している:

void func();

割り当てを使用して:

functPntr1 = &ClassA::func;

今、私は別の関数ポインタを持っています:

void (ClassA::*funcPntr2)(void);

funcPntr2 が funcPntr1 が指す関数を指すようにします。それ、どうやったら出来るの?

私はこれを試しました:

funcPntr2 = &(this->*funcPntr); //normally, i invoke the function pointer by (this->*funcPntr)()

しかし、間違っています。多くの論理的な組み合わせを試しましたが、うまくいかないようです。

4

2 に答える 2

1

割り当てあり:

funcPntr2 = funcPntr;
于 2013-11-09T16:55:37.820 に答える
1

現在割り当てられているポインターを割り当てたい場合、他の人が言ったように、それは単なる割り当てです(funcPntr2 = funcPntr)。

この代入を持続させたい場合、つまりfuncPntr2常にどこを指すかを指したいfuncPntr場合は、後者が変更されたとしても、定義を変更しない限り方法はありません。

あなたはしなければならないでしょう

  • 持っているvoid (ClassA::**funcPntr2)(void);
  • 割り当てfuncPntr2 = &funcPntr
  • コール(*funcPntr)()

あなたが C++ について話しているように、私はあまり詳しくありません。多分あなたは参照で何かをすることができます。

于 2013-11-09T17:00:37.847 に答える