0
我有2個類,A和B在不同的類中使用和設置靜態函數指針
A有一個名爲foo()的函數;
B有一個靜態函數指針旨在指向foo,我們稱它爲fuu。
在B類FUU的定義是這樣的
static void (A::*fuu)();
某處沿運行時類A組FUU。 我寫的代碼類似於此
B::fuu = &A:foo;
這正確地設置的函數指針,但我無法使用它(我在B類調用它)
我已經試過
*fuu();
B::fuu();
B::*fuu();
是否有語法錯誤阻止我解除引用?
TLDR試圖從A類的一個實例,在B類調用非靜態函數,從靜態函數
是否有無法調用非靜態成員函數的原因?我認爲,因爲指針指向地址空間,所以我可以在解引用後調用它。 也可以解決這個問題嗎?也許將一個非靜態函數作爲回調傳遞給一個靜態函數? –
指向非靜態成員函數的指針就像是指向一個函數的指針,該函數將一個對象指針作爲第一個參數傳遞(在函數內可作爲'this'訪問)。爲了像這樣調用函數指針,你需要傳遞所有參數,包括第一個參數 - 回答中顯示的方法基本上是合成糖以填充第一個參數。 – epx