2016-08-26 39 views
0

我這下面的結構(在頭文件):如何添加一個構造函數指針作爲一個參數

struct StateTransitions { 
    State currentState; 
    State nextState; 
    void (*fn)(); 

    StateTransitions (State currentState, State nextState, void (*fn)()) 
    { 

    } 
}; 

而且我想這個結構的某些情況下,推入向量(內.cpp文件):

void MyClass::Start() 
{ 

} 

transitions.push_back(StateTransitions(Low, Started, &MyClass::Start)); 

我無法得到這個編譯。我不確定我在類中的構造函數的聲明是否正確。

什麼是添加構造函數的正確方法,所以我不能將這種類型的對象添加到我的向量?

我正在使用pre-C++ 11。

+3

函數指針和成員函數指針是不同的。你可能想'void(MyClass :: *)()'。 – songyuanyao

+1

你應該包含你的編譯器錯誤。 – szym

+0

@songyuanyao:你說得對,我很困惑。這似乎現在建立。 – Kobe

回答

2

不能將指針指向成員函數作爲靜態函數。原因是一個成員函數需要傳遞給this指針,而一個靜態函數沒有(並且編譯器需要檢查你傳遞的任何類型)。

另請參閱:Function pointer to member function

相關問題