2014-10-06 60 views
0

我有一個Foo類。在構造函數中傳遞和存儲靜態函數指針

class Foo 
{ 
public: 
    int(_bar)(const int); 

    Foo(int(bar)(const int)) 
    { 
     _bar = bar; 
    } 
}; 

我想傳遞一個指向創建靜態函數的指針,並將其保留在類中,以便稍後調用它。

我得到的錯誤...

error C2659: '=' : function as left operand 

...但我不明白爲什麼。

任何人都可以請指教?

回答

2

功能:

int(_bar)(const int); 

函數指針:

int(*_bar)(const int); 

你剛纔忘了*

+0

謝謝。但爲什麼這不需要param? – Beakie 2014-10-06 12:47:03

+0

如果你想把一個函數指針作爲一個參數,就需要這個錯誤,這個錯誤恰好發生在成員上,因爲你試圖分配給它,你可以用一個函數指針來做,但不能用函數來做(如果甚至是有道理的)。 – Drax 2014-10-06 12:48:19

+0

因此,如果我要像這樣傳遞方法,Foo(int(bar)(const int))作爲構造函數定義無效:Foo(&someStaticFunc); – Beakie 2014-10-06 12:50:12