2013-11-09 100 views
0

我有一個類ClassA的C++函數指針分配功能: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)() 

不過是錯誤的。我已經嘗試了許多邏輯組合,但似乎沒有工作。

+3

'funcPntr2 = funcPntr;'? – chris

+0

但是,這不僅僅是複製指針而不是指針指向的函數? – Alterecho

+0

如果你想funcPntr2引用funcPntr的指稱,那麼你希望funcPtr2等於funcPntr。所以funcPtr2 = funcPntr; – zmccord

回答

1

分配對象:

funcPntr2 = funcPntr; 
+0

那不是隻是複製指針而不是指針指向的函數? – Alterecho

+3

@Alterecho:函數不是對象,也不是成員函數。沒有「複製功能」的概念。 –

+0

當我在賦值後更改funcPntr指向的函數時會發生什麼? – Alterecho

1

如果你想分配這是目前分配給它的指針,它僅僅是一種任務,爲其他人說(funcPntr2 = funcPntr)。

如果你想要這個任務保持,我。即如果你希望funcPntr2總是指向funcPntr指向的位置,即使後者改變了,除非你改變定義,否則沒有辦法。

你不得不

  • void (ClassA::**funcPntr2)(void);
  • 分配funcPntr2 = &funcPntr
  • 呼叫(*funcPntr)()

當你談論C++時,我並不那麼熟悉;也許你可以用引用做些事情。

+0

這仍然取決於第一個funcPntr。我正在嘗試在作業後創建funcPntr2獨立的funcPntr1。那麼沒有辦法做到這一點? – Alterecho