2011-06-09 76 views
1
轉換

這次我的問題是給函數指針分配一個函數。我有這樣一個類:錯誤C2440:'=':無法從

class MyClass 
{ 
private: 
    bool dofunction() {return true;} 

protected: 
    bool (*ptf)(); 

public: 
    MyClass(); 
}; 

MyClass::MyClass 
{ 
    ptf = dofunction; //// error 
} 

,但如果我用一個函數的類之外它編譯:

bool function() 
{ 
    return true; 
} 

MyClass::MyClass() 
{ 
    ptf = function; //// OK 
} 

任何幫助嗎?


啊哈! 謝謝

我用static關鍵字。

+0

功能類型不兼容......一個是成員函數(帶有隱含的'this'參數),另一個不是成員函數。 – dreamlax 2011-06-09 11:51:51

+0

問題不清楚請考慮修復語法和整理代碼。也請選擇一個答案。 – 2011-06-11 07:50:38

回答

5

對於類成員函數,你需要使用pointer to member functions

bool (MyClass::*ptf)() ; 

應分配爲,

ptf = &(MyClass::dofunction); 

還要注意,現在你不能分配ptf非類函數。這是完全不同的類型(即使語法看起來相同)。

0

第一個是bool (MyClass::*ptf)()類型的..你需要指定它在類

0

我覺得應該是:

bool (MyClass::*ptf)(); 
相關問題